提交 d7ad09da 编写于 作者: D Dr. David von Oheimb 提交者: Hugo Landau

CMS and PKCS7: fix handlling of EVP_PKEY_get_size() failure

Reviewed-by: NTomas Mraz <tomas@openssl.org>
Reviewed-by: NPaul Dale <pauli@openssl.org>
Reviewed-by: NHugo Landau <hlandau@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22459)
上级 f03ce9e0
...@@ -764,8 +764,7 @@ static int cms_SignerInfo_content_sign(CMS_ContentInfo *cms, ...@@ -764,8 +764,7 @@ static int cms_SignerInfo_content_sign(CMS_ContentInfo *cms,
md = computed_md; md = computed_md;
} }
siglen = EVP_PKEY_get_size(si->pkey); siglen = EVP_PKEY_get_size(si->pkey);
sig = OPENSSL_malloc(siglen); if (siglen == 0 || (sig = OPENSSL_malloc(siglen)) == NULL)
if (sig == NULL)
goto err; goto err;
if (EVP_PKEY_sign(pctx, sig, &siglen, md, mdlen) <= 0) { if (EVP_PKEY_sign(pctx, sig, &siglen, md, mdlen) <= 0) {
OPENSSL_free(sig); OPENSSL_free(sig);
...@@ -780,8 +779,8 @@ static int cms_SignerInfo_content_sign(CMS_ContentInfo *cms, ...@@ -780,8 +779,8 @@ static int cms_SignerInfo_content_sign(CMS_ContentInfo *cms,
ERR_raise(ERR_LIB_CMS, CMS_R_OPERATION_UNSUPPORTED); ERR_raise(ERR_LIB_CMS, CMS_R_OPERATION_UNSUPPORTED);
goto err; goto err;
} }
sig = OPENSSL_malloc(EVP_PKEY_get_size(si->pkey)); siglen = EVP_PKEY_get_size(si->pkey);
if (sig == NULL) if (siglen == 0 || (sig = OPENSSL_malloc(siglen)) == NULL)
goto err; goto err;
if (!EVP_SignFinal_ex(mctx, sig, &siglen, si->pkey, if (!EVP_SignFinal_ex(mctx, sig, &siglen, si->pkey,
ossl_cms_ctx_get0_libctx(ctx), ossl_cms_ctx_get0_libctx(ctx),
......
...@@ -834,10 +834,9 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) ...@@ -834,10 +834,9 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
goto err; goto err;
} else { } else {
unsigned char *abuf = NULL; unsigned char *abuf = NULL;
unsigned int abuflen; unsigned int abuflen = EVP_PKEY_get_size(si->pkey);
abuflen = EVP_PKEY_get_size(si->pkey);
abuf = OPENSSL_malloc(abuflen); if (abuflen == 0 || (abuf = OPENSSL_malloc(abuflen)) == NULL)
if (abuf == NULL)
goto err; goto err;
if (!EVP_SignFinal_ex(ctx_tmp, abuf, &abuflen, si->pkey, if (!EVP_SignFinal_ex(ctx_tmp, abuf, &abuflen, si->pkey,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册