Fix lock leak in evp_keymgmt_util_export_to_provider()
authorRichard Levitte <levitte@openssl.org>
Sat, 16 Oct 2021 08:22:42 +0000 (10:22 +0200)
committerRichard Levitte <levitte@openssl.org>
Sat, 16 Oct 2021 08:22:42 +0000 (10:22 +0200)
Fixes #16847

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16849)

crypto/evp/keymgmt_lib.c

index 32e4fbcbaa0bb7410ed3911de6b67fa5f1a9419f..875c9a83de1f919e7b749e73b3bdc63293fb1b8e 100644 (file)
@@ -197,6 +197,7 @@ void *evp_keymgmt_util_export_to_provider(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt)
 
     /* Add the new export to the operation cache */
     if (!evp_keymgmt_util_cache_keydata(pk, keymgmt, import_data.keydata)) {
+        CRYPTO_THREAD_unlock(pk->lock);
         evp_keymgmt_freedata(keymgmt, import_data.keydata);
         return NULL;
     }