Ugh, BIO_find_type() cannot be passed a NULL.
[openssl.git] / crypto / pkcs7 / pk7_smime.c
index 225fc63da066d44ce0655629b815f558db4b29bd..c8cd5a7f73eb370ecd3c6f9d3c55b4f1e5b599dd 100644 (file)
@@ -109,6 +109,8 @@ PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
                PKCS7_add_signed_attribute(si, NID_pkcs9_contentType,
                                V_ASN1_OBJECT, OBJ_nid2obj(NID_pkcs7_data));
                /* Add SMIMECapabilities */
+               if(!(flags & PKCS7_NOSMIMECAP))
+               {
                if(!(smcap = sk_X509_ALGOR_new(NULL))) {
                        PKCS7err(PKCS7_F_PKCS7_SIGN,ERR_R_MALLOC_FAILURE);
                        return NULL;
@@ -128,6 +130,7 @@ PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
 #endif
                PKCS7_add_attrib_smimecap (si, smcap);
                sk_X509_ALGOR_pop_free(smcap, X509_ALGOR_free);
+               }
        }
 
        if(flags & PKCS7_DETACHED)PKCS7_set_detached(p7, 1);
@@ -150,7 +153,7 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
        PKCS7_SIGNER_INFO *si;
        X509_STORE_CTX cert_ctx;
        char buf[4096];
-       int i, j=0;
+       int i, j=0, k;
        BIO *p7bio;
        BIO *tmpout;
 
@@ -190,8 +193,8 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
 
        /* Now verify the certificates */
 
-       if (!(flags & PKCS7_NOVERIFY)) for (i = 0; i < sk_X509_num(signers); i++) {
-               signer = sk_X509_value (signers, i);
+       if (!(flags & PKCS7_NOVERIFY)) for (k = 0; k < sk_X509_num(signers); k++) {
+               signer = sk_X509_value (signers, k);
                if (!(flags & PKCS7_NOCHAIN)) {
                        X509_STORE_CTX_init(&cert_ctx, store, signer,
                                                        p7->d.sign->cert);