diff --git a/crypto/cms/cms_lib.c b/crypto/cms/cms_lib.c index ede016dff0..a115a3b900 100644 --- a/crypto/cms/cms_lib.c +++ b/crypto/cms/cms_lib.c @@ -15,6 +15,7 @@ #include #include #include "internal/sizes.h" +#include "internal/cryptlib.h" #include "crypto/x509.h" #include "cms_local.h" @@ -696,8 +697,9 @@ int ossl_cms_get1_crls_ex(CMS_ContentInfo *cms, STACK_OF(X509_CRL) **crls) for (i = 0; i < n; i++) { rch = sk_CMS_RevocationInfoChoice_value(*pcrls, i); if (rch->type == 0) { - if (!sk_X509_CRL_push(*crls, rch->d.crl) - || !X509_CRL_up_ref(rch->d.crl)) { + if (!X509_CRL_up_ref(rch->d.crl) + || !ossl_assert(sk_X509_CRL_push(*crls, rch->d.crl))) { + /* push cannot fail on reserved stack */ sk_X509_CRL_pop_free(*crls, X509_CRL_free); *crls = NULL; return 0;