From: Dr. Stephen Henson Date: Mon, 27 Feb 2012 15:23:20 +0000 (+0000) Subject: Detect symmetric crypto errors in PKCS7_decrypt. X-Git-Tag: OpenSSL_0_9_8u~18 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=29d0c13e97604b3bcce6eed228c0a80c676e3a80;p=oweals%2Fopenssl.git Detect symmetric crypto errors in PKCS7_decrypt. Thanks to Ivan Nestlerode for reporting this bug. --- diff --git a/crypto/pkcs7/pk7_smime.c b/crypto/pkcs7/pk7_smime.c index fd18ec3d95..fd56b42066 100644 --- a/crypto/pkcs7/pk7_smime.c +++ b/crypto/pkcs7/pk7_smime.c @@ -486,15 +486,30 @@ int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags) 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; } }