From 61e3264cf11cfbc9d8989f61afadb0be2fa7207b Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <daniel@yesql.se>
Date: Fri, 2 Oct 2026 09:29:06 +0200
Subject: [PATCH v5 3/5] Clear SSL_hosts when destroying TLS

The loaded SSL_CTX objects were cleared on SSL initialization but not
when destroying the TLS objects via be_tls_destroy().  This would not
leak the contexts, but consume memory for no reason.

Reported-by: Jacob Champion <jacob.champion@enterprisedb.com>
Reviewed-by: Zsolt Parragi <zsolt.parragi@percona.com>
Discussion: https://postgr.es/m/CAOYmi+mAtEn4wN3xx=r4TaY5AHy9_q9XncM8YQLhofE3op0SvA@mail.gmail.com
Backpatch-through: 19
---
 src/backend/libpq/be-secure-openssl.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c
index c95e2ec62c2..b9cac88ba55 100644
--- a/src/backend/libpq/be-secure-openssl.c
+++ b/src/backend/libpq/be-secure-openssl.c
@@ -856,6 +856,13 @@ be_tls_destroy(void)
 		SSL_CTX_free(SSL_context);
 	SSL_context = NULL;
 	ssl_loaded_verify_locations = false;
+
+	if (SSL_hosts_memcxt)
+	{
+		MemoryContextDelete(SSL_hosts_memcxt);
+		SSL_hosts_memcxt = NULL;
+		SSL_hosts = NULL;
+	}
 }
 
 int
-- 
2.39.3 (Apple Git-146)

