Possible memory leak in pgcrypto with EVP_MD_CTX - Mailing list pgsql-hackers

From Michael Paquier
Subject Possible memory leak in pgcrypto with EVP_MD_CTX
Date
Msg-id 20201015072212.GC2305@paquier.xyz
Whole thread Raw
Responses Re: Possible memory leak in pgcrypto with EVP_MD_CTX
List pgsql-hackers
Hi all,

It happens that pgcrypto has the following leak if a digest cannot be
initialized:
--- a/contrib/pgcrypto/openssl.c
+++ b/contrib/pgcrypto/openssl.c
@@ -202,6 +202,7 @@ px_find_digest(const char *name, PX_MD **res)
    }
    if (EVP_DigestInit_ex(ctx, md, NULL) == 0)
    {
+       EVP_MD_CTX_destroy(ctx);
        pfree(digest);
        return -1;
    }

That's a bit annoying, because this memory is allocated directly by
OpenSSL, and Postgres does not know how to free it until it gets
registered in the list of open_digests that would be used by the
cleanup callback, so I think that we had better back-patch this fix.

Thoughts?
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Masahiko Sawada
Date:
Subject: Re: Add Information during standby recovery conflicts
Next
From: Dilip Kumar
Date:
Subject: Re: Logical replication CPU-bound with TRUNCATE/DROP/CREATE many tables