aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/init.c
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2016-03-09 00:53:38 +0000
committerRichard Levitte <levitte@openssl.org>2016-03-09 11:04:21 +0100
commitae6412f3bed37a4a7e8248ccbc31c849f20ac857 (patch)
tree7519230d0c7cb8a884b1863a12ee5f8714bb6ae0 /crypto/init.c
parent0231a02963a80a3d2efe43745ba19dba5fe9213f (diff)
downloadopenssl-ae6412f3bed37a4a7e8248ccbc31c849f20ac857.tar.gz
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>
Diffstat (limited to 'crypto/init.c')
-rw-r--r--crypto/init.c23
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();