diff options
author | Dr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> | 2018-09-10 00:20:12 +0200 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2018-09-10 11:11:43 +0100 |
commit | 35db366cf453427c855bea8ca097618a8a8d7ff0 (patch) | |
tree | 4e32263a177677cfa16a51a3a181993c55e0a6cf /test | |
parent | 427e91d928ce7a1c583e4bba761cb17a85ac95b4 (diff) |
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: Nicola Tuveri <nic.tuv@gmail.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/7158)
Diffstat (limited to 'test')
-rw-r--r-- | test/evp_extra_test.c | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c index f0b0040eae..7b847eed8e 100644 --- a/test/evp_extra_test.c +++ b/test/evp_extra_test.c @@ -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)) - || !TEST_ptr_eq(p, input + input_len) - || !TEST_int_eq(EVP_PKEY_id(pkey), expected_id))) - goto done; - + 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)) + goto done; + break; #ifndef OPENSSL_NO_EC - if (type == 1 && - (!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)))) - goto done; - - if (type == 2 && - (!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)))) - goto done; + 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))) + goto done; + 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))) + goto done; + break; #endif + default: + return 0; + } if (!TEST_ptr(ctx = EVP_PKEY_CTX_new(pkey, NULL))) goto done; |