]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Don't leak PKINIT CMS signed data certs and CRLs
authorNalin Dahyabhai <nalin@dahyabhai.net>
Thu, 11 Jul 2013 02:17:58 +0000 (22:17 -0400)
committerGreg Hudson <ghudson@mit.edu>
Mon, 15 Jul 2013 15:05:26 +0000 (11:05 -0400)
The stacks of certificates and CRLs that we retrieve from CMS objects
include newly-owned references to the certificates and CRLs, so when we
go to free them, we need to remember to free those.

[ghudson@mit.edu: minor formatting change; removed unrelated style fix]

src/plugins/preauth/pkinit/pkinit_crypto_openssl.c

index ae4efc343b98dc9bdd81539c07f82c2340f60014..29c4f5755b40c67eb27d26812d6349a1cb785788 100644 (file)
@@ -177,8 +177,10 @@ pkinit_pkcs11_code_to_text(int err);
 #include <openssl/cms.h>
 #define pkinit_CMS_get0_content_signed(_cms) CMS_get0_content(_cms)
 #define pkinit_CMS_get0_content_data(_cms) CMS_get0_content(_cms)
-#define pkinit_CMS_free1_crls(_sk_x509crl) sk_X509_CRL_free((_sk_x509crl))
-#define pkinit_CMS_free1_certs(_sk_x509) sk_X509_free((_sk_x509))
+#define pkinit_CMS_free1_crls(_sk_x509crl)              \
+    sk_X509_CRL_pop_free((_sk_x509crl), X509_CRL_free)
+#define pkinit_CMS_free1_certs(_sk_x509)        \
+    sk_X509_pop_free((_sk_x509), X509_free)
 #define pkinit_CMS_SignerInfo_get_cert(_cms,_si,_x509_pp)       \
     CMS_SignerInfo_get0_algs(_si,NULL,_x509_pp,NULL,NULL)
 #else