crypto/provider_core.c: Avoid calling unlock two times
authorPeiwei Hu <jlu.hpw@foxmail.com>
Thu, 23 Jun 2022 15:59:50 +0000 (23:59 +0800)
committerTomas Mraz <tomas@openssl.org>
Tue, 28 Jun 2022 15:48:19 +0000 (17:48 +0200)
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18641)

crypto/provider_core.c

index 072e29e0237d5e3a25ffa551ef1e9ac2f0e05d23..6f82b2983555c8d8a668c4a6ecdf6249c6839803 100644 (file)
@@ -641,7 +641,7 @@ int ossl_provider_add_to_store(OSSL_PROVIDER *prov, OSSL_PROVIDER **actualprov,
         if (!ossl_provider_up_ref(actualtmp)) {
             ERR_raise(ERR_LIB_CRYPTO, ERR_R_MALLOC_FAILURE);
             actualtmp = NULL;
-            goto err;
+            return 0;
         }
         *actualprov = actualtmp;
     }
@@ -665,8 +665,6 @@ int ossl_provider_add_to_store(OSSL_PROVIDER *prov, OSSL_PROVIDER **actualprov,
 
  err:
     CRYPTO_THREAD_unlock(store->lock);
-    if (actualprov != NULL)
-        ossl_provider_free(*actualprov);
     return 0;
 }