From beedea2fefcb085250389f2987b52fe3e0e4975c Mon Sep 17 00:00:00 2001
From: "Dr. Stephen Henson" <steve@openssl.org>
Date: Fri, 26 Mar 2004 00:24:38 +0000
Subject: [PATCH] Free up BIO properly when using streaming S/MIME sign.

---
 crypto/pkcs7/pk7_mime.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/crypto/pkcs7/pk7_mime.c b/crypto/pkcs7/pk7_mime.c
index 1823418465..210ec1e8c4 100644
--- a/crypto/pkcs7/pk7_mime.c
+++ b/crypto/pkcs7/pk7_mime.c
@@ -239,14 +239,13 @@ static int pkcs7_output_data(BIO *out, BIO *data, PKCS7 *p7, int flags)
 	/* 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);
-		if (tmpbio == out)
-			break;
-		BIO_free(tmpbio);
+		BIO_free(p7bio);
+		p7bio = tmpbio;
 		}
 
 	return 1;
-- 
2.25.1