diff options
author | Phil Mesnier <mesnierp@objectcomputing.com> | 2021-10-27 04:26:45 -0500 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2021-11-05 10:55:19 +1000 |
commit | 09d91264c8ee1fdfcbe41f326a96a21cd85eb732 (patch) | |
tree | 05b573eda49f03d2201a2a680d93e5dbc2a0bb0a /test/dhtest.c | |
parent | cc350c882218b1053a636d01eb36573b3e7b20c2 (diff) |
Fix for a segv interrupt that occurs when fix_dh_rfc5114 is called with
ctx->p2 being a null pointer.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16913)
(cherry picked from commit 07e6c857364770f6e986b5d8ceb9fbe296f3c6d0)
Diffstat (limited to 'test/dhtest.c')
-rw-r--r-- | test/dhtest.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/dhtest.c b/test/dhtest.c index bd99b06a24..c24bae4a82 100644 --- a/test/dhtest.c +++ b/test/dhtest.c @@ -730,6 +730,27 @@ err: return ok; } +static int dh_rfc5114_fix_nid_test(void) +{ + int ok = 0; + EVP_PKEY_CTX *paramgen_ctx; + + /* Run the test. Success is any time the test does not cause a SIGSEGV interrupt */ + paramgen_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_DHX, 0); + if (!TEST_ptr(paramgen_ctx)) + goto err; + if (!TEST_int_eq(EVP_PKEY_paramgen_init(paramgen_ctx), 1)) + goto err; + /* Tested function is called here */ + if (!TEST_int_eq(EVP_PKEY_CTX_set_dhx_rfc5114(paramgen_ctx, 3), 1)) + goto err; + /* If we're still running then the test passed. */ + ok = 1; +err: + EVP_PKEY_CTX_free(paramgen_ctx); + return ok; +} + static int dh_get_nid(void) { int ok = 0; @@ -876,6 +897,7 @@ int setup_tests(void) ADD_ALL_TESTS(dh_test_prime_groups, OSSL_NELEM(prime_groups)); ADD_TEST(dh_get_nid); ADD_TEST(dh_load_pkcs3_namedgroup_privlen_test); + ADD_TEST(dh_rfc5114_fix_nid_test); #endif return 1; } |