diff options
author | Tomas Mraz <tomas@openssl.org> | 2022-01-13 19:00:13 +0100 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2022-01-17 16:23:26 +0100 |
commit | 554addd65b6ce9ee0b8f1d6c4115ef192d693f4f (patch) | |
tree | d1e4d08c4d00b414f3da237b62f3e8e1530c6a2b | |
parent | ba4f941b081897747e8432296cd14bebafc97920 (diff) |
Properly return error on EVP_PKEY_CTX_set_dh_nid and EVP_PKEY_CTX_set_dhx_rfc5114
Fixes #17485
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17498)
(cherry picked from commit f58bb2dd00c3004552c5c1e8d0f2c1390c004cf8)
-rw-r--r-- | crypto/evp/ctrl_params_translate.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/crypto/evp/ctrl_params_translate.c b/crypto/evp/ctrl_params_translate.c index f6a2d1d0f8..3dd3e8f995 100644 --- a/crypto/evp/ctrl_params_translate.c +++ b/crypto/evp/ctrl_params_translate.c @@ -1004,8 +1004,11 @@ static int fix_dh_nid(enum state state, return 0; if (state == PRE_CTRL_TO_PARAMS) { - ctx->p2 = (char *)ossl_ffc_named_group_get_name - (ossl_ffc_uid_to_dh_named_group(ctx->p1)); + if ((ctx->p2 = (char *)ossl_ffc_named_group_get_name + (ossl_ffc_uid_to_dh_named_group(ctx->p1))) == NULL) { + ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_VALUE); + return 0; + } ctx->p1 = 0; } @@ -1028,16 +1031,24 @@ static int fix_dh_nid5114(enum state state, 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)); + if ((ctx->p2 = (char *)ossl_ffc_named_group_get_name + (ossl_ffc_uid_to_dh_named_group(ctx->p1))) == NULL) { + ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_VALUE); + return 0; + } + 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))); + if ((ctx->p2 = (char *)ossl_ffc_named_group_get_name + (ossl_ffc_uid_to_dh_named_group(atoi(ctx->p2)))) == NULL) { + ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_VALUE); + return 0; + } + ctx->p1 = 0; break; |