Free up BIO properly when using streaming S/MIME sign.
authorDr. Stephen Henson <steve@openssl.org>
Fri, 26 Mar 2004 00:24:38 +0000 (00:24 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 26 Mar 2004 00:24:38 +0000 (00:24 +0000)
crypto/pkcs7/pk7_mime.c

index 1823418465cf603fa9cc1c16750c3ecb98a55d9b..210ec1e8c4fb670bb596cf4a6140eae697145cf0 100644 (file)
@@ -239,14 +239,13 @@ static int pkcs7_output_data(BIO *out, BIO *data, PKCS7 *p7, int flags)
        /* Finalize signatures */
        PKCS7_dataFinal(p7, p7bio);
 
        /* Finalize signatures */
        PKCS7_dataFinal(p7, p7bio);
 
-       /* Now remove any digests from output BIO */
+       /* Now remove any digests prepended to the BIO */
 
 
-       while (1)
+       while (p7bio != out)
                {
                tmpbio = BIO_pop(p7bio);
                {
                tmpbio = BIO_pop(p7bio);
-               if (tmpbio == out)
-                       break;
-               BIO_free(tmpbio);
+               BIO_free(p7bio);
+               p7bio = tmpbio;
                }
 
        return 1;
                }
 
        return 1;