]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
CMS_add1_crl(): prevent double free on failure of CMS_add0_crl()
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>
Fri, 10 Feb 2023 08:53:43 +0000 (09:53 +0100)
committerDr. David von Oheimb <dev@ddvo.net>
Fri, 24 Feb 2023 07:49:08 +0000 (08:49 +0100)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/19199)

crypto/cms/cms_lib.c

index b5a4b315a3a18464a71048c3f1ca3123fd716eeb..2744306959e2084ff885f29f50cbf7786b85eb7e 100644 (file)
@@ -620,11 +620,12 @@ int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl)
 
 int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl)
 {
-    int r;
-    r = CMS_add0_crl(cms, crl);
-    if (r > 0)
-        X509_CRL_up_ref(crl);
-    return r;
+    if (!X509_CRL_up_ref(crl))
+        return 0;
+    if (CMS_add0_crl(cms, crl))
+        return 1;
+    X509_CRL_free(crl);
+    return 0;
 }
 
 STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms)