From: Richard Levitte Date: Wed, 21 Aug 2019 08:12:05 +0000 (+0200) Subject: Fix drbg_ossl_ctx_free() and drbg_nonce_ossl_ctx_free() to handle NULL X-Git-Tag: openssl-3.0.0-alpha1~1556 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=85d09e8848012d0dfdacf827d9d56730fa5daf16 Fix drbg_ossl_ctx_free() and drbg_nonce_ossl_ctx_free() to handle NULL If these were passed NULL, the crashed with a SIGSEGV, when they should do like all other freeing functions and become a no-op. Reviewed-by: Shane Lontis (Merged from https://github.com/openssl/openssl/pull/9650) --- diff --git a/crypto/rand/drbg_lib.c b/crypto/rand/drbg_lib.c index 825e90d48e..f8b58d7245 100644 --- a/crypto/rand/drbg_lib.c +++ b/crypto/rand/drbg_lib.c @@ -191,6 +191,9 @@ static void drbg_ossl_ctx_free(void *vdgbl) { DRBG_GLOBAL *dgbl = vdgbl; + if (dgbl == NULL) + return; + RAND_DRBG_free(dgbl->master_drbg); CRYPTO_THREAD_cleanup_local(&dgbl->private_drbg); CRYPTO_THREAD_cleanup_local(&dgbl->public_drbg); @@ -230,6 +233,9 @@ static void drbg_nonce_ossl_ctx_free(void *vdngbl) { DRBG_NONCE_GLOBAL *dngbl = vdngbl; + if (dngbl == NULL) + return; + CRYPTO_THREAD_lock_free(dngbl->rand_nonce_lock); OPENSSL_free(dngbl);