From: Zhihao Yuan Date: Tue, 27 Aug 2024 01:48:36 +0000 (-0700) Subject: Recycle the TLS key that holds thread_event_handler X-Git-Tag: openssl-3.5.0-alpha1~1178 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36840ab577d547a35cbc7c72396dc7931712eb6e;p=thirdparty%2Fopenssl.git Recycle the TLS key that holds thread_event_handler Fixes #25278 Reviewed-by: Neil Horman Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/25300) --- diff --git a/crypto/initthread.c b/crypto/initthread.c index e4d830d7fc5..27b460009e1 100644 --- a/crypto/initthread.c +++ b/crypto/initthread.c @@ -266,9 +266,8 @@ void *ossl_thread_event_ctx_new(OSSL_LIB_CTX *libctx) if (tlocal == NULL) return NULL; - if (!CRYPTO_THREAD_init_local(tlocal, NULL)) { - goto err; - } + if (!CRYPTO_THREAD_init_local(tlocal, NULL)) + goto deinit; hands = OPENSSL_zalloc(sizeof(*hands)); if (hands == NULL) @@ -290,12 +289,15 @@ void *ossl_thread_event_ctx_new(OSSL_LIB_CTX *libctx) return tlocal; err: OPENSSL_free(hands); + CRYPTO_THREAD_cleanup_local(tlocal); + deinit: OPENSSL_free(tlocal); return NULL; } void ossl_thread_event_ctx_free(void *tlocal) { + CRYPTO_THREAD_cleanup_local(tlocal); OPENSSL_free(tlocal); }