From: Dr. Stephen Henson Date: Fri, 10 Feb 2012 16:54:56 +0000 (+0000) Subject: only cleanup ctx if we need to, save ctx flags when we do X-Git-Tag: OpenSSL_1_0_1-beta3~21 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8705846710caf9da99b8e591792c3ea0b6225c7d;p=oweals%2Fopenssl.git 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 8828327d92..691072655b 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -125,10 +125,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) {