Detect symmetric crypto errors in PKCS7_decrypt.
Thanks to Ivan Nestlerode <inestlerode@us.ibm.com> for reporting this bug.
This commit is contained in:
parent
f7ef20c5ee
commit
d16bb406d4
@ -573,15 +573,30 @@ int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ret = SMIME_text(bread, data);
|
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);
|
BIO_free_all(bread);
|
||||||
return ret;
|
return ret;
|
||||||
} else {
|
} else {
|
||||||
for(;;) {
|
for(;;) {
|
||||||
i = BIO_read(tmpmem, buf, sizeof(buf));
|
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_write(data, buf, i);
|
||||||
}
|
}
|
||||||
BIO_free_all(tmpmem);
|
BIO_free_all(tmpmem);
|
||||||
return 1;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user