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
diff --git a/contrib/pgcrypto/openssl.c b/contrib/pgcrypto/openssl.c
index 90951a8ae7..ed96e4ce53 100644
--- 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;
}
signature.asc
Description: PGP signature
