summaryrefslogtreecommitdiffstats
path: root/crypto/evp
diff options
context:
space:
mode:
authorPhil Mesnier <mesnierp@objectcomputing.com>2021-10-27 04:26:45 -0500
committerPauli <pauli@openssl.org>2021-11-05 10:54:35 +1000
commit07e6c857364770f6e986b5d8ceb9fbe296f3c6d0 (patch)
treebd1c7faa3dce43b14cf42e1a186a3a2d4ab3ae6f /crypto/evp
parentd355c879b64e99194db8b943c6efc4b1a38740e5 (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.c16
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);
}
-