Skip to content

Commit

Permalink
fix missing null check in kdf_test_ctrl
Browse files Browse the repository at this point in the history
Coverity issue 1453632 noted a missing null check in kdf_test_ctrl
recently.  If a malformed value is passed in from the test file that
does not contain a ':' character, the p variable will be NULL, leading
to a NULL derefence prepare_from_text

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Tom Cosgrove <[email protected]>
(Merged from openssl#23398)

(cherry picked from commit 6ca1d3e)
  • Loading branch information
nhorman committed Jan 30, 2024
1 parent c44ce7f commit 1e86ae5
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions test/evp_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -2859,7 +2859,9 @@ static int kdf_test_ctrl(EVP_TEST *t, EVP_KDF_CTX *kctx,
if (!TEST_ptr(name = OPENSSL_strdup(value)))
return 0;
p = strchr(name, ':');
if (p != NULL)
if (p == NULL)
p = "";
else
*p++ = '\0';

if (strcmp(name, "r") == 0
Expand Down Expand Up @@ -2912,30 +2914,29 @@ static int kdf_test_ctrl(EVP_TEST *t, EVP_KDF_CTX *kctx,
}

rv = OSSL_PARAM_allocate_from_text(kdata->p, defs, name, p,
p != NULL ? strlen(p) : 0, NULL);
strlen(p), NULL);
*++kdata->p = OSSL_PARAM_construct_end();
if (!rv) {
t->err = "KDF_PARAM_ERROR";
OPENSSL_free(name);
return 0;
}
if (p != NULL && strcmp(name, "digest") == 0) {
if (strcmp(name, "digest") == 0) {
if (is_digest_disabled(p)) {
TEST_info("skipping, '%s' is disabled", p);
t->skip = 1;
}
goto end;
}
if (p != NULL
&& (strcmp(name, "cipher") == 0
|| strcmp(name, "cekalg") == 0)

if ((strcmp(name, "cipher") == 0
|| strcmp(name, "cekalg") == 0)
&& is_cipher_disabled(p)) {
TEST_info("skipping, '%s' is disabled", p);
t->skip = 1;
goto end;
}
if (p != NULL
&& (strcmp(name, "mac") == 0)
if ((strcmp(name, "mac") == 0)
&& is_mac_disabled(p)) {
TEST_info("skipping, '%s' is disabled", p);
t->skip = 1;
Expand Down

0 comments on commit 1e86ae5

Please sign in to comment.