diff options
author | Matt Caswell <matt@openssl.org> | 2016-03-09 00:53:38 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2016-03-09 11:04:21 +0100 |
commit | ae6412f3bed37a4a7e8248ccbc31c849f20ac857 (patch) | |
tree | 7519230d0c7cb8a884b1863a12ee5f8714bb6ae0 | |
parent | 0231a02963a80a3d2efe43745ba19dba5fe9213f (diff) |
Always call ENGINE_cleanup() in de-init
Even if we haven't loaded an engine, we might have set up the
global_engine_lock, so we should still clean up.
Reviewed-by: Richard Levitte <levitte@openssl.org>
-rw-r--r-- | crypto/init.c | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/crypto/init.c b/crypto/init.c index b0826ee41c..c19afd09e2 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -236,7 +236,6 @@ static void ossl_init_async(void) #endif #ifndef OPENSSL_NO_ENGINE -static int engine_inited = 0; static CRYPTO_ONCE engine_openssl = CRYPTO_ONCE_STATIC_INIT; static void ossl_init_engine_openssl(void) { @@ -245,7 +244,6 @@ static void ossl_init_engine_openssl(void) "engine_load_openssl_internal()\n"); # endif engine_load_openssl_internal(); - engine_inited = 1; } # if !defined(OPENSSL_NO_HW) && \ (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)) @@ -257,7 +255,6 @@ static void ossl_init_engine_cryptodev(void) "engine_load_cryptodev_internal()\n"); # endif engine_load_cryptodev_internal(); - engine_inited = 1; } # endif @@ -270,7 +267,6 @@ static void ossl_init_engine_rdrand(void) "engine_load_rdrand_internal()\n"); # endif engine_load_rdrand_internal(); - engine_inited = 1; } # endif static CRYPTO_ONCE engine_dynamic = CRYPTO_ONCE_STATIC_INIT; @@ -281,7 +277,6 @@ static void ossl_init_engine_dynamic(void) "engine_load_dynamic_internal()\n"); # endif engine_load_dynamic_internal(); - engine_inited = 1; } # ifndef OPENSSL_NO_STATIC_ENGINE # if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK) @@ -293,7 +288,6 @@ static void ossl_init_engine_padlock(void) "engine_load_padlock_internal()\n"); # endif engine_load_padlock_internal(); - engine_inited = 1; } # endif # if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG) @@ -305,7 +299,6 @@ static void ossl_init_engine_capi(void) "engine_load_capi_internal()\n"); # endif engine_load_capi_internal(); - engine_inited = 1; } # endif static CRYPTO_ONCE engine_dasync = CRYPTO_ONCE_STATIC_INIT; @@ -316,7 +309,6 @@ static void ossl_init_engine_dasync(void) "engine_load_dasync_internal()\n"); # endif engine_load_dasync_internal(); - engine_inited = 1; } # if !defined(OPENSSL_NO_AFALGENG) static OPENSSL_INIT_ONCE engine_afalg = OPENSSL_INIT_ONCE_STATIC_INIT; @@ -327,7 +319,6 @@ static void ossl_init_engine_afalg(void) "engine_load_afalg_internal()\n"); # endif engine_load_afalg_internal(); - engine_inited = 1; } # endif # endif @@ -453,16 +444,6 @@ void OPENSSL_cleanup(void) } #endif -#ifndef OPENSSL_NO_ENGINE - if (engine_inited) { -# ifdef OPENSSL_INIT_DEBUG - fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " - "ENGINE_cleanup()\n"); -# endif - ENGINE_cleanup(); - } -#endif - if (load_crypto_strings_inited) { #ifdef OPENSSL_INIT_DEBUG fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " @@ -474,6 +455,8 @@ void OPENSSL_cleanup(void) CRYPTO_THREAD_cleanup_local(&threadstopkey); #ifdef OPENSSL_INIT_DEBUG + fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " + "ENGINE_cleanup()\n"); fprintf(stderr, "OPENSSL_INIT: OPENSSL_INIT_library_stop: " "CRYPTO_cleanup_all_ex_data()\n"); fprintf(stderr, "OPENSSL_INIT: OPENSSL_INIT_library_stop: " @@ -482,7 +465,9 @@ void OPENSSL_cleanup(void) "CONF_modules_free()\n"); fprintf(stderr, "OPENSSL_INIT: OPENSSL_INIT_library_stop: " "RAND_cleanup()\n"); + #endif + ENGINE_cleanup(); CRYPTO_cleanup_all_ex_data(); EVP_cleanup(); CONF_modules_free(); |