From: Alon Bar-Lev Date: Tue, 26 Jul 2022 05:53:48 +0000 (+0300) Subject: REGRESSION: CMS_final: do not ignore CMS_dataFinal result X-Git-Tag: openssl-3.2.0-alpha1~2323 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b03756130dadb3732b460a6efd930f1b226acdad;p=thirdparty%2Fopenssl.git REGRESSION: CMS_final: do not ignore CMS_dataFinal result The CMS_dataFinal result is important as signature may fail, however, it is ignored while returning success from CMS_final. The SMIME_crlf_copy result is returned while it is ignored in the rest of the openssl code. Prefer the CMS_dataFinal result. This is regression from openssl-1. Blame finds c1669f41ei as root cause of regression. Signed-off-by: Alon Bar-Lev Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale Reviewed-by: Hugo Landau (Merged from https://github.com/openssl/openssl/pull/18876) --- diff --git a/crypto/cms/cms_smime.c b/crypto/cms/cms_smime.c index 2123875f1cd..4f5d626fb66 100644 --- a/crypto/cms/cms_smime.c +++ b/crypto/cms/cms_smime.c @@ -882,7 +882,7 @@ int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags) return 0; } - ret = SMIME_crlf_copy(data, cmsbio, flags); + SMIME_crlf_copy(data, cmsbio, flags); (void)BIO_flush(cmsbio); @@ -890,6 +890,9 @@ int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags) ERR_raise(ERR_LIB_CMS, CMS_R_CMS_DATAFINAL_ERROR); goto err; } + + ret = 1; + err: do_free_upto(cmsbio, dcont);