]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
evp: fix coverity 1467500 & 1467502: unchecked return values
authorPauli <ppzgs1@gmail.com>
Thu, 18 Mar 2021 23:40:05 +0000 (09:40 +1000)
committerPauli <pauli@openssl.org>
Thu, 25 Mar 2021 22:46:02 +0000 (08:46 +1000)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14615)

crypto/evp/p_legacy.c

index af93288dcb3a671103eaf2aea3a113a4640c7cec..c1d813f047f83da3f9bf571fae1d0bd74596006b 100644 (file)
@@ -57,11 +57,13 @@ RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey)
 #ifndef OPENSSL_NO_EC
 int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, EC_KEY *key)
 {
-    int ret = EVP_PKEY_assign_EC_KEY(pkey, key);
-
-    if (ret)
-        EC_KEY_up_ref(key);
-    return ret;
+    if (!EC_KEY_up_ref(key))
+        return 0;
+    if (!EVP_PKEY_assign_EC_KEY(pkey, key)) {
+        EC_KEY_free(key);
+        return 0;
+    }
+    return 1;
 }
 
 EC_KEY *evp_pkey_get0_EC_KEY_int(const EVP_PKEY *pkey)
@@ -82,8 +84,8 @@ EC_KEY *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey)
 {
     EC_KEY *ret = evp_pkey_get0_EC_KEY_int(pkey);
 
-    if (ret != NULL)
-        EC_KEY_up_ref(ret);
+    if (ret != NULL && !EC_KEY_up_ref(ret))
+        ret = NULL;
     return ret;
 }
 #endif /* OPENSSL_NO_EC */