Commit ffe9150b authored by Matt Caswell's avatar Matt Caswell
Browse files

Fix a potential double free in EVP_DigestInit_ex



There is a potential double free in EVP_DigestInit_ex. This is believed
to be reached only as a result of programmer error - but we should fix it
anyway.

Issue reported by Guido Vranken.

Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
parent 507c7c0e
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -219,8 +219,10 @@ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
    }
#endif
    if (ctx->digest != type) {
        if (ctx->digest && ctx->digest->ctx_size)
        if (ctx->digest && ctx->digest->ctx_size) {
            OPENSSL_free(ctx->md_data);
            ctx->md_data = NULL;
        }
        ctx->digest = type;
        if (!(ctx->flags & EVP_MD_CTX_FLAG_NO_INIT) && type->ctx_size) {
            ctx->update = type->update;