From ca57d78a6e0ae3e51e0740ed5ef9530d160f8aab Mon Sep 17 00:00:00 2001
From: Gilles Peskine <Gilles.Peskine@arm.com>
Date: Thu, 20 Jul 2023 19:08:06 +0200
Subject: [PATCH] Fix PBKDF2 with empty salt on platforms where malloc(0)=NULL

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
---
 library/psa_crypto.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 8c4d8603b8..c67094026b 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -6679,7 +6679,9 @@ static psa_status_t psa_pbkdf2_set_salt(psa_pbkdf2_key_derivation_t *pbkdf2,
         return PSA_ERROR_BAD_STATE;
     }
 
-    if (pbkdf2->state == PSA_PBKDF2_STATE_INPUT_COST_SET) {
+    if (data_length == 0) {
+        /* Nothing to do */
+    } else if (pbkdf2->state == PSA_PBKDF2_STATE_INPUT_COST_SET) {
         pbkdf2->salt = mbedtls_calloc(1, data_length);
         if (pbkdf2->salt == NULL) {
             return PSA_ERROR_INSUFFICIENT_MEMORY;