diff options
author | Phil Mesnier <mesnierp@objectcomputing.com> | 2021-10-27 04:26:45 -0500 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2021-11-05 10:54:35 +1000 |
commit | 07e6c857364770f6e986b5d8ceb9fbe296f3c6d0 (patch) | |
tree | bd1c7faa3dce43b14cf42e1a186a3a2d4ab3ae6f /crypto/evp | |
parent | d355c879b64e99194db8b943c6efc4b1a38740e5 (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)
Diffstat (limited to 'crypto/evp')
-rw-r--r-- | crypto/evp/ctrl_params_translate.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/crypto/evp/ctrl_params_translate.c b/crypto/evp/ctrl_params_translate.c index d17017a78e..cfde29dac2 100644 --- a/crypto/evp/ctrl_params_translate.c +++ b/crypto/evp/ctrl_params_translate.c @@ -1026,10 +1026,23 @@ static int fix_dh_nid5114(enum state state, if (ctx->action_type != SET) return 0; - if (state == PRE_CTRL_STR_TO_PARAMS) { + switch (state) { + case PRE_CTRL_TO_PARAMS: + ctx->p2 = (char *)ossl_ffc_named_group_get_name + (ossl_ffc_uid_to_dh_named_group(ctx->p1)); + ctx->p1 = 0; + break; + + case PRE_CTRL_STR_TO_PARAMS: + if (ctx->p2 == NULL) + return 0; ctx->p2 = (char *)ossl_ffc_named_group_get_name (ossl_ffc_uid_to_dh_named_group(atoi(ctx->p2))); ctx->p1 = 0; + break; + + default: + break; } return default_fixup_args(state, translation, ctx); @@ -2741,4 +2754,3 @@ int evp_pkey_get_params_to_ctrl(const EVP_PKEY *pkey, OSSL_PARAM *params) { return evp_pkey_setget_params_to_ctrl(pkey, GET, params); } - |