From: Tomas Mraz Date: Tue, 28 Jun 2022 15:37:39 +0000 (+0200) Subject: Avoid crashing if CONF_modules_unload() is called after OPENSSL_cleanup() X-Git-Tag: openssl-3.2.0-alpha1~2444 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d840f07bcdfc3910de5aa327a245866a67f94799;p=thirdparty%2Fopenssl.git Avoid crashing if CONF_modules_unload() is called after OPENSSL_cleanup() Although this is basically an incorrect API call it was not crashing before and it might happen inadvertently if CONF_modules_unload() is called from a destructor for example. Fixes #18669 Reviewed-by: Paul Dale Reviewed-by: Hugo Landau (Merged from https://github.com/openssl/openssl/pull/18673) --- diff --git a/crypto/conf/conf_mod.c b/crypto/conf/conf_mod.c index c6b8696388c..2de47e8e425 100644 --- a/crypto/conf/conf_mod.c +++ b/crypto/conf/conf_mod.c @@ -521,7 +521,9 @@ static int conf_modules_finish_int(void) if (!RUN_ONCE(&init_module_list_lock, do_init_module_list_lock)) return 0; - if (!CRYPTO_THREAD_write_lock(module_list_lock)) + /* If module_list_lock is NULL here it means we were already unloaded */ + if (module_list_lock == NULL + || !CRYPTO_THREAD_write_lock(module_list_lock)) return 0; while (sk_CONF_IMODULE_num(initialized_modules) > 0) {