The branch master has been updated via 90ef39f43ad5bf4e85c56a79d0b56fb590b3c7f7 (commit) from a7922e208ddfbdcff44d1b3fa5839f96510d04bd (commit)
- Log ----------------------------------------------------------------- commit 90ef39f43ad5bf4e85c56a79d0b56fb590b3c7f7 Author: Richard Levitte <levi...@openssl.org> Date: Wed Aug 5 10:40:01 2020 +0200 EVP: Fix the returned value for ASN1_PKEY_CTRL_DEFAULT_MD_NID Trust the returned value from EVP_PKEY_get_default_digest_name()! It mimics exactly the values that EVP_PKEY_get_default_digest_nid() is supposed to return, and that value should simply be passed unchanged. Callers depend on it. Reviewed-by: Matt Caswell <m...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/12586) ----------------------------------------------------------------------- Summary of changes: crypto/evp/p_lib.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/crypto/evp/p_lib.c b/crypto/evp/p_lib.c index 3e3f2118a2..2563cd97ca 100644 --- a/crypto/evp/p_lib.c +++ b/crypto/evp/p_lib.c @@ -1202,19 +1202,18 @@ static int legacy_asn1_ctrl_to_param(EVP_PKEY *pkey, int op, case ASN1_PKEY_CTRL_DEFAULT_MD_NID: { char mdname[80] = ""; - int nid; int rv = EVP_PKEY_get_default_digest_name(pkey, mdname, sizeof(mdname)); - if (rv <= 0) - return rv; - nid = OBJ_sn2nid(mdname); - if (nid == NID_undef) - nid = OBJ_ln2nid(mdname); - if (nid == NID_undef) - return 0; - *(int *)arg2 = nid; - return 1; + if (rv > 0) { + int nid; + + nid = OBJ_sn2nid(mdname); + if (nid == NID_undef) + nid = OBJ_ln2nid(mdname); + *(int *)arg2 = nid; + } + return rv; } default: return -2;