From: Dr. Stephen Henson Date: Fri, 10 Feb 2012 16:55:17 +0000 (+0000) Subject: only cleanup ctx if we need to, save ctx flags when we do X-Git-Tag: master-post-reformat~1956 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=f94cfe6a12964ec5801d5dfb61efdb6d6eebcfa1;hp=7951c2699f1b78d5480b9f41a71233fcaf98d18f only cleanup ctx if we need to, save ctx flags when we do --- diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c index 8d57d204d6..5b3bf3bb2c 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -115,10 +115,14 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *imp /* Ensure a context left lying around from last time is cleared * (the previous check attempted to avoid this if the same * ENGINE and EVP_CIPHER could be used). */ - EVP_CIPHER_CTX_cleanup(ctx); - - /* Restore encrypt field: it is zeroed by cleanup */ - ctx->encrypt = enc; + if (ctx->cipher) + { + unsigned long flags = ctx->flags; + EVP_CIPHER_CTX_cleanup(ctx); + /* Restore encrypt and flags */ + ctx->encrypt = enc; + ctx->flags = flags; + } #ifndef OPENSSL_NO_ENGINE if(impl) {