File bug749210-Symmetric-crypto-errors-in-PKCS7_decrypt.patch of Package compat-openssl098.703

Index: openssl-1.0.0g/crypto/pkcs7/pk7_smime.c
===================================================================
--- openssl-1.0.0g.orig/crypto/pkcs7/pk7_smime.c
+++ openssl-1.0.0g/crypto/pkcs7/pk7_smime.c
@@ -573,15 +573,30 @@ int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *p
 			return 0;
 		}
 		ret = SMIME_text(bread, data);
+		if (ret > 0 && BIO_method_type(tmpmem) == BIO_TYPE_CIPHER)
+		{
+			if (!BIO_get_cipher_status(tmpmem))
+				ret = 0;
+		}
 		BIO_free_all(bread);
 		return ret;
 	} else {
 		for(;;) {
 			i = BIO_read(tmpmem, buf, sizeof(buf));
-			if(i <= 0) break;
+			if(i <= 0)
+			{
+				ret = 1;
+				if (BIO_method_type(tmpmem) == BIO_TYPE_CIPHER)
+				{
+					if (!BIO_get_cipher_status(tmpmem))
+						ret = 0;
+				}
+
+				break;
+			}
 			BIO_write(data, buf, i);
 		}
 		BIO_free_all(tmpmem);
-		return 1;
+		return ret;
 	}
 }
openSUSE Build Service is sponsored by