kdfs: make free calls check for NULL.
authorPauli <paul.dale@oracle.com>
Thu, 21 Nov 2019 04:19:50 +0000 (14:19 +1000)
committerPauli <paul.dale@oracle.com>
Fri, 22 Nov 2019 05:19:28 +0000 (15:19 +1000)
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10496)

providers/implementations/kdfs/hkdf.c
providers/implementations/kdfs/kbkdf.c
providers/implementations/kdfs/krb5kdf.c
providers/implementations/kdfs/pbkdf2.c
providers/implementations/kdfs/scrypt.c
providers/implementations/kdfs/sshkdf.c
providers/implementations/kdfs/sskdf.c
providers/implementations/kdfs/tls1_prf.c
providers/implementations/kdfs/x942kdf.c

index 66d70635a6b2948acc549ac3ba123b89bb0e10e4..d9f53a67e722a7a7e5c8c43dd0b1b3979de52669 100644 (file)
@@ -75,8 +75,10 @@ static void kdf_hkdf_free(void *vctx)
 {
     KDF_HKDF *ctx = (KDF_HKDF *)vctx;
 
-    kdf_hkdf_reset(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        kdf_hkdf_reset(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static void kdf_hkdf_reset(void *vctx)
index 1c0e2b2b78604f2c7623186c07452d02e8f4ff79..acc7d7f47b8f37118f8fd53100e1de6d26d203fe 100644 (file)
@@ -113,8 +113,10 @@ static void kbkdf_free(void *vctx)
 {
     KBKDF *ctx = (KBKDF *)vctx;
 
-    kbkdf_reset(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        kbkdf_reset(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static void kbkdf_reset(void *vctx)
index 83dfa9c2dcd78248f901ea00d208ed379f909b3c..ee7742ea27df0905a1e1aa69e7f1eb34d2c1ebde 100644 (file)
@@ -63,8 +63,10 @@ static void krb5kdf_free(void *vctx)
 {
     KRB5KDF_CTX *ctx = (KRB5KDF_CTX *)vctx;
 
-    krb5kdf_reset(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        krb5kdf_reset(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static void krb5kdf_reset(void *vctx)
index f08063fab52f2e9ec6233ccca45213590f18629c..077b93afb02c34fa7b25d1db0bc828401deb97df 100644 (file)
@@ -80,8 +80,10 @@ static void kdf_pbkdf2_free(void *vctx)
 {
     KDF_PBKDF2 *ctx = (KDF_PBKDF2 *)vctx;
 
-    kdf_pbkdf2_cleanup(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        kdf_pbkdf2_cleanup(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static void kdf_pbkdf2_reset(void *vctx)
index a067a9a91c893743e12bc8aad4ddc9030065b433..425db1af6f2907e7c1b3669332f7248b6ee74eac 100644 (file)
@@ -74,9 +74,11 @@ static void kdf_scrypt_free(void *vctx)
 {
     KDF_SCRYPT *ctx = (KDF_SCRYPT *)vctx;
 
-    EVP_MD_meth_free(ctx->sha256);
-    kdf_scrypt_reset(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        EVP_MD_meth_free(ctx->sha256);
+        kdf_scrypt_reset(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static void kdf_scrypt_reset(void *vctx)
index d5484f4acb39f0efdd5d89a5c6c9b20214b447dc..508fb6350ade9d24362ae3f946bf60ec0282340f 100644 (file)
@@ -63,8 +63,10 @@ static void kdf_sshkdf_free(void *vctx)
 {
     KDF_SSHKDF *ctx = (KDF_SSHKDF *)vctx;
 
-    kdf_sshkdf_reset(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        kdf_sshkdf_reset(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static void kdf_sshkdf_reset(void *vctx)
index 4f69eec7f66ef8648e341e459a735e564e6ee6f9..2c4600d2058e0f758a240c40441822028ad4f578 100644 (file)
@@ -315,8 +315,10 @@ static void sskdf_free(void *vctx)
 {
     KDF_SSKDF *ctx = (KDF_SSKDF *)vctx;
 
-    sskdf_reset(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        sskdf_reset(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static int sskdf_set_buffer(unsigned char **out, size_t *out_len,
index 0a83753a8a1b00cf18b8041425677cd31447eb89..84d712afc5571c72486cb3d6391b147db1f8d076 100644 (file)
@@ -106,8 +106,10 @@ static void kdf_tls1_prf_free(void *vctx)
 {
     TLS1_PRF *ctx = (TLS1_PRF *)vctx;
 
-    kdf_tls1_prf_reset(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        kdf_tls1_prf_reset(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static void kdf_tls1_prf_reset(void *vctx)
index 5a84d5096821af4857d593c9b545625ec73d21f0..1459e0f6616a80f6279d741d8cfbd03cf17afc49 100644 (file)
@@ -266,8 +266,10 @@ static void x942kdf_free(void *vctx)
 {
     KDF_X942 *ctx = (KDF_X942 *)vctx;
 
-    x942kdf_reset(ctx);
-    OPENSSL_free(ctx);
+    if (ctx != NULL) {
+        x942kdf_reset(ctx);
+        OPENSSL_free(ctx);
+    }
 }
 
 static int x942kdf_set_buffer(unsigned char **out, size_t *out_len,