From: Bernd Edlinger Date: Mon, 19 Jun 2017 11:33:41 +0000 (+0200) Subject: Fix the fall-out in 04-test_bioprint.t X-Git-Tag: OpenSSL_1_1_0g~164 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4b4bc00a00456e6d5cc8b2a26489ae905c049f41;p=openssl Fix the fall-out in 04-test_bioprint.t Reviewed-by: Richard Levitte Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/3712) (cherry picked from commit 3ac6d5ee5372b05aa90cc5c44efbde01bd669e9e) --- diff --git a/crypto/init.c b/crypto/init.c index 647cfb6c63..3956967749 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -43,7 +43,10 @@ static struct thread_local_inits_st *ossl_init_get_thread_local(int alloc) if (local == NULL && alloc) { local = OPENSSL_zalloc(sizeof *local); - CRYPTO_THREAD_set_local(&threadstopkey, local); + if (local != NULL && !CRYPTO_THREAD_set_local(&threadstopkey, local)) { + OPENSSL_free(local); + return NULL; + } } if (!alloc) { CRYPTO_THREAD_set_local(&threadstopkey, NULL); @@ -356,7 +359,12 @@ void OPENSSL_thread_stop(void) int ossl_init_thread_start(uint64_t opts) { - struct thread_local_inits_st *locals = ossl_init_get_thread_local(1); + struct thread_local_inits_st *locals; + + if (!OPENSSL_init_crypto(0, NULL)) + return 0; + + locals = ossl_init_get_thread_local(1); if (locals == NULL) return 0;