Fix the fall-out in 04-test_bioprint.t
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Mon, 19 Jun 2017 11:33:41 +0000 (13:33 +0200)
committerRich Salz <rsalz@openssl.org>
Mon, 19 Jun 2017 12:56:50 +0000 (08:56 -0400)
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3712)

crypto/init.c

index 8f63b9aa994d55d84660b8231f070d11b1e22e0c..b930b52b2f6a4104d44d37a5698fd8d037149ad8 100644 (file)
@@ -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);
@@ -359,7 +362,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;