]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Avoid crashing if CONF_modules_unload() is called after OPENSSL_cleanup()
authorTomas Mraz <tomas@openssl.org>
Tue, 28 Jun 2022 15:37:39 +0000 (17:37 +0200)
committerTomas Mraz <tomas@openssl.org>
Fri, 1 Jul 2022 09:20:51 +0000 (11:20 +0200)
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 <pauli@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18673)

crypto/conf/conf_mod.c

index c6b8696388c628b6e72b35b944f6c98b5eacd613..2de47e8e42522a6ce79ebceca930fe159e5e7989 100644 (file)
@@ -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) {