diff options
author | Tomas Mraz <tomas@openssl.org> | 2024-01-12 18:47:56 +0100 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2024-02-07 11:18:25 +0100 |
commit | f3875dad4bca7d62c54a24ca920c06492020ce64 (patch) | |
tree | 3bfa01ca4dc5f5246f0f9187fe52c218eeeaf875 | |
parent | a91c268853c4bda825a505629a873e21685490bf (diff) |
Fix testcases to run on duplicated keys
The existing loop pattern did not really run the expected
tests on the duplicated keys.
Fixes #23129
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23292)
(cherry picked from commit 387b93e14907cd8203d6f2c9d78e49df01cb6e1f)
-rw-r--r-- | test/evp_extra_test.c | 6 | ||||
-rw-r--r-- | test/evp_pkey_provided_test.c | 63 | ||||
-rw-r--r-- | test/keymgmt_internal_test.c | 8 |
3 files changed, 56 insertions, 21 deletions
diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c index 6b484f8711..e7b813493f 100644 --- a/test/evp_extra_test.c +++ b/test/evp_extra_test.c @@ -1100,7 +1100,7 @@ static int test_EC_priv_only_legacy(void) goto err; eckey = NULL; - while (dup_pk == NULL) { + for (;;) { ret = 0; ctx = EVP_MD_CTX_new(); if (!TEST_ptr(ctx)) @@ -1116,6 +1116,9 @@ static int test_EC_priv_only_legacy(void) EVP_MD_CTX_free(ctx); ctx = NULL; + if (dup_pk != NULL) + break; + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pkey))) goto err; /* EVP_PKEY_eq() returns -2 with missing public keys */ @@ -1125,6 +1128,7 @@ static int test_EC_priv_only_legacy(void) if (!ret) goto err; } + ret = 1; err: EVP_MD_CTX_free(ctx); diff --git a/test/evp_pkey_provided_test.c b/test/evp_pkey_provided_test.c index 27f90e42a7..688a8c1c5e 100644 --- a/test/evp_pkey_provided_test.c +++ b/test/evp_pkey_provided_test.c @@ -389,7 +389,7 @@ static int test_fromdata_rsa(void) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 32) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 8) @@ -417,7 +417,10 @@ static int test_fromdata_rsa(void) ret = test_print_key_using_pem("RSA", pk) && test_print_key_using_encoder("RSA", pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -602,7 +605,7 @@ static int test_fromdata_dh_named_group(void) &len))) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112) @@ -682,7 +685,10 @@ static int test_fromdata_dh_named_group(void) ret = test_print_key_using_pem("DH", pk) && test_print_key_using_encoder("DH", pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -783,7 +789,7 @@ static int test_fromdata_dh_fips186_4(void) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112) @@ -857,7 +863,10 @@ static int test_fromdata_dh_fips186_4(void) ret = test_print_key_using_pem("DH", pk) && test_print_key_using_encoder("DH", pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -1090,7 +1099,7 @@ static int test_fromdata_ecx(int tst) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), bits) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), security_bits) @@ -1145,7 +1154,10 @@ static int test_fromdata_ecx(int tst) ret = test_print_key_using_pem(alg, pk) && test_print_key_using_encoder(alg, pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -1262,7 +1274,7 @@ static int test_fromdata_ec(void) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 256) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 128) @@ -1301,6 +1313,15 @@ static int test_fromdata_ec(void) || !TEST_BN_eq(group_b, b)) goto err; + EC_GROUP_free(group); + group = NULL; + BN_free(group_p); + group_p = NULL; + BN_free(group_a); + group_a = NULL; + BN_free(group_b); + group_b = NULL; + if (!EVP_PKEY_get_utf8_string_param(pk, OSSL_PKEY_PARAM_GROUP_NAME, out_curve_name, sizeof(out_curve_name), @@ -1329,7 +1350,10 @@ static int test_fromdata_ec(void) ret = test_print_key_using_pem(alg, pk) && test_print_key_using_encoder(alg, pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -1575,7 +1599,7 @@ static int test_fromdata_dsa_fips186_4(void) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112) @@ -1624,12 +1648,12 @@ static int test_fromdata_dsa_fips186_4(void) &pcounter_out)) || !TEST_int_eq(pcounter, pcounter_out)) goto err; - BN_free(p); - p = NULL; - BN_free(q); - q = NULL; - BN_free(g); - g = NULL; + BN_free(p_out); + p_out = NULL; + BN_free(q_out); + q_out = NULL; + BN_free(g_out); + g_out = NULL; BN_free(j_out); j_out = NULL; BN_free(pub_out); @@ -1657,7 +1681,10 @@ static int test_fromdata_dsa_fips186_4(void) ret = test_print_key_using_pem("DSA", pk) && test_print_key_using_encoder("DSA", pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); diff --git a/test/keymgmt_internal_test.c b/test/keymgmt_internal_test.c index ce2e458f8c..78b1cd717e 100644 --- a/test/keymgmt_internal_test.c +++ b/test/keymgmt_internal_test.c @@ -224,7 +224,7 @@ static int test_pass_rsa(FIXTURE *fixture) || !TEST_ptr_ne(km1, km2)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; km = km3; /* Check that we can't export an RSA key into an RSA-PSS keymanager */ @@ -255,7 +255,11 @@ static int test_pass_rsa(FIXTURE *fixture) } ret = (ret == OSSL_NELEM(expected)); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); |