Remove the fallback from ERR_get_state because the
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Wed, 14 Jun 2017 08:16:15 +0000 (10:16 +0200)
committerMatt Caswell <matt@openssl.org>
Wed, 14 Jun 2017 10:53:11 +0000 (11:53 +0100)
return value is now checked at the callers.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3678)

crypto/err/err.c

index 32fe8f320e64f7c4b83aaf9786061b2736842c00..03d407cab8e1373f843ecc3c277988bd0cfde23d 100644 (file)
@@ -1022,7 +1022,6 @@ void ERR_remove_state(unsigned long pid)
 
 ERR_STATE *ERR_get_state(void)
 {
-    static ERR_STATE fallback;
     ERR_STATE *ret, tmp, *tmpp = NULL;
     int i;
     CRYPTO_THREADID tid;
@@ -1036,7 +1035,7 @@ ERR_STATE *ERR_get_state(void)
     if (ret == NULL) {
         ret = (ERR_STATE *)OPENSSL_malloc(sizeof(ERR_STATE));
         if (ret == NULL)
-            return (&fallback);
+            return NULL;
         CRYPTO_THREADID_cpy(&ret->tid, &tid);
         ret->top = 0;
         ret->bottom = 0;
@@ -1048,7 +1047,7 @@ ERR_STATE *ERR_get_state(void)
         /* To check if insertion failed, do a get. */
         if (ERRFN(thread_get_item) (ret) != ret) {
             ERR_STATE_free(ret); /* could not insert it */
-            return (&fallback);
+            return NULL;
         }
         /*
          * If a race occured in this function and we came second, tmpp is the