summaryrefslogtreecommitdiffstats
path: root/crypto/init.c
diff options
context:
space:
mode:
authorBenjamin Kaduk <bkaduk@akamai.com>2018-01-26 09:32:40 -0600
committerBen Kaduk <kaduk@mit.edu>2018-01-31 12:25:28 -0600
commitadeb4bc7a03aa61b6b26c3857dd91b05164daa60 (patch)
tree1f90ef66be82c5c5bd629dde4aae367e0013e274 /crypto/init.c
parent63ab5ea13b671cb60dd4b7cfde2bcae9d14c5a60 (diff)
Restore clearing of init_lock after free
The behavior of resetting the init_lock value to NULL after freeing it during OPENSSL_cleanup() was added as part of the global lock commits that were just reverted, but there is desire to retain this behavior for clarity. It is unclear that the library would actually remain usable in any form after OPENSSL_cleanup(), since the required re-initialization occurs under a CRYPTO_ONCE check that cannot be reset at cleanup time. That said, a NULL dereference is probably more friendly behavior in these treacherous waters than using freed memory would be. Reviewed-by: Kurt Roeckx <kurt@roeckx.be> Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (Merged from https://github.com/openssl/openssl/pull/5089)
Diffstat (limited to 'crypto/init.c')
-rw-r--r--crypto/init.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/crypto/init.c b/crypto/init.c
index 71accaa2ca..1b94d07e04 100644
--- a/crypto/init.c
+++ b/crypto/init.c
@@ -421,6 +421,7 @@ void OPENSSL_cleanup(void)
stop_handlers = NULL;
CRYPTO_THREAD_lock_free(init_lock);
+ init_lock = NULL;
/*
* We assume we are single-threaded for this function, i.e. no race