Commit 35db366c authored by Dr. Matthias St. Pierre's avatar Dr. Matthias St. Pierre Committed by Matt Caswell
Browse files

test/evp_extra_test.c: fix null pointer dereference



It's actually not a real issue but caused by the absence of the default case
which does not occur in reality but which makes coverity see a code path where
pkey remains unassigned.

Reported by Coverity Scan (CID 1423323)
[extended tests]

Reviewed-by: default avatarNicola Tuveri <nic.tuv@gmail.com>
Reviewed-by: default avatarMatt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/7158)
parent 427e91d9
Loading
Loading
Loading
Loading
+24 −19
Original line number Diff line number Diff line
@@ -855,27 +855,32 @@ static int test_EVP_PKEY_check(int i)

    p = input;

    if (type == 0 &&
            (!TEST_ptr(pkey = d2i_AutoPrivateKey(NULL, &p, input_len))
    switch (type) {
    case 0:
        if (!TEST_ptr(pkey = d2i_AutoPrivateKey(NULL, &p, input_len))
            || !TEST_ptr_eq(p, input + input_len)
             || !TEST_int_eq(EVP_PKEY_id(pkey), expected_id)))
            || !TEST_int_eq(EVP_PKEY_id(pkey), expected_id))
            goto done;

        break;
#ifndef OPENSSL_NO_EC
    if (type == 1 &&
            (!TEST_ptr(pubkey = BIO_new_mem_buf(input, input_len))
    case 1:
        if (!TEST_ptr(pubkey = BIO_new_mem_buf(input, input_len))
            || !TEST_ptr(eckey = d2i_EC_PUBKEY_bio(pubkey, NULL))
            || !TEST_ptr(pkey = EVP_PKEY_new())
             || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey, eckey))))
            || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey, eckey)))
            goto done;

    if (type == 2 &&
            (!TEST_ptr(eckey = d2i_ECParameters(NULL, &p, input_len))
        break;
    case 2:
        if (!TEST_ptr(eckey = d2i_ECParameters(NULL, &p, input_len))
            || !TEST_ptr_eq(p, input + input_len)
            || !TEST_ptr(pkey = EVP_PKEY_new())
             || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey, eckey))))
            || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey, eckey)))
            goto done;
        break;
#endif
    default:
        return 0;
    }

    if (!TEST_ptr(ctx = EVP_PKEY_CTX_new(pkey, NULL)))
        goto done;