]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
CMS_get0_SignerInfos(): Prevent spurious error on cms_get0_signed() failure
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>
Mon, 3 May 2021 19:58:02 +0000 (21:58 +0200)
committerDr. David von Oheimb <dev@ddvo.net>
Wed, 19 May 2021 07:23:41 +0000 (09:23 +0200)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12959)

crypto/cms/cms_sd.c

index d208822c4b294c2d31f8c743f1ff69f94c15f7d1..c0235b6962464bccc2adc1754bb5c94dcadcd23a 100644 (file)
@@ -496,9 +496,13 @@ void ossl_cms_SignerInfos_set_cmsctx(CMS_ContentInfo *cms)
 {
     int i;
     CMS_SignerInfo *si;
-    STACK_OF(CMS_SignerInfo) *sinfos = CMS_get0_SignerInfos(cms);
+    STACK_OF(CMS_SignerInfo) *sinfos;
     const CMS_CTX *ctx = ossl_cms_get0_cmsctx(cms);
 
+    ERR_set_mark();
+    sinfos = CMS_get0_SignerInfos(cms);
+    ERR_pop_to_mark(); /* removes error in case sinfos == NULL */
+
     for (i = 0; i < sk_CMS_SignerInfo_num(sinfos); i++) {
         si = sk_CMS_SignerInfo_value(sinfos, i);
         if (si != NULL)