evp/evp_enc.c: allow EVP_CIPHER.ctx_size to be 0.
In such case it would be EVP_CIPHER.cleanup's reponsibility to wipe EVP_CIPHEX_CTX.cipher_data. Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
72bb2f64fc
commit
f6b9427923
@ -105,10 +105,8 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
|
|||||||
* previous handle, re-querying for an ENGINE, and having a
|
* previous handle, re-querying for an ENGINE, and having a
|
||||||
* reinitialisation, when it may all be unecessary.
|
* reinitialisation, when it may all be unecessary.
|
||||||
*/
|
*/
|
||||||
if (ctx->engine && ctx->cipher && (!cipher ||
|
if (ctx->engine && ctx->cipher
|
||||||
(cipher
|
&& (!cipher || (cipher && (cipher->nid == ctx->cipher->nid))))
|
||||||
&& (cipher->nid ==
|
|
||||||
ctx->cipher->nid))))
|
|
||||||
goto skip_to_init;
|
goto skip_to_init;
|
||||||
#endif
|
#endif
|
||||||
if (cipher) {
|
if (cipher) {
|
||||||
@ -531,7 +529,7 @@ int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *c)
|
|||||||
if (c->cipher->cleanup && !c->cipher->cleanup(c))
|
if (c->cipher->cleanup && !c->cipher->cleanup(c))
|
||||||
return 0;
|
return 0;
|
||||||
/* Cleanse cipher context data */
|
/* Cleanse cipher context data */
|
||||||
if (c->cipher_data)
|
if (c->cipher_data && c->cipher->ctx_size)
|
||||||
OPENSSL_cleanse(c->cipher_data, c->cipher->ctx_size);
|
OPENSSL_cleanse(c->cipher_data, c->cipher->ctx_size);
|
||||||
}
|
}
|
||||||
OPENSSL_free(c->cipher_data);
|
OPENSSL_free(c->cipher_data);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user