Add a NULL check to EVP_PKEY_assign
authorjwalch <jeremy.walch@gmail.com>
Thu, 10 Sep 2020 02:36:00 +0000 (22:36 -0400)
committerTomas Mraz <tmraz@fedoraproject.org>
Thu, 17 Sep 2020 07:36:52 +0000 (09:36 +0200)
Fixes  #12619

Update p_lib.c

Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12863)

crypto/evp/p_lib.c
test/ecdsatest.c

index e336d91286c0ef84193698b5035a7ab070b4331b..5e032b40536858e08af1adf00989c9a193d8fde7 100644 (file)
@@ -709,7 +709,7 @@ int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key)
     int alias = type;
 
 #ifndef OPENSSL_NO_EC
-    if (EVP_PKEY_type(type) == EVP_PKEY_EC) {
+    if ((key != NULL) && (EVP_PKEY_type(type) == EVP_PKEY_EC)) {
         const EC_GROUP *group = EC_KEY_get0_group(key);
 
         if (group != NULL && EC_GROUP_get_curve_name(group) == NID_sm2)
index f7d6608f392e922b42ac2a979fa1722b9d5ef9df..471aaa184dd1cb063d1201d40f174adb6a5dc30d 100644 (file)
@@ -252,6 +252,7 @@ static int test_builtin(int n, int as)
         || !TEST_ptr(eckey_neg = EC_KEY_new_by_curve_name(nid))
         || !TEST_true(EC_KEY_generate_key(eckey_neg))
         || !TEST_ptr(pkey_neg = EVP_PKEY_new())
+        || !TEST_false(EVP_PKEY_assign_EC_KEY(pkey_neg, NULL))
         || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey_neg, eckey_neg)))
         goto err;