]> git.kaiwu.me - haproxy.git/commitdiff
BUG/MINOR: ssl: free curves, sigalgs and client_sigalgs in ssl_sock_free_srv_ctx()
authorWilliam Lallemand <wlallemand@irq6.net>
Sun, 27 Sep 2026 15:18:08 +0000 (15:18 +0000)
committerWilliam Lallemand <wlallemand@irq6.net>
Sun, 27 Sep 2026 15:44:51 +0000 (17:44 +0200)
The ssl-default-server-* keywords (curves, sigalgs, client_sigalgs)
allocate memory via strdup() that was never freed when servers are
destroyed. This causes a memory leak per server instance.

Add ha_free() calls guarded by the same OpenSSL API version checks
matching the allocation guards in cfgparse-ssl.c.

This change should be backported to all supported branches.

src/ssl_sock.c

index c216b70cc8099edb3bf9d7d9657e9c38f3cf07f6..701287a2a9198100b3b3463d0bcfb5416459a376 100644 (file)
@@ -5965,6 +5965,15 @@ void ssl_sock_free_srv_ctx(struct server *srv)
        srv->ssl_ctx.sni = NULL;
 #endif
        ha_free(&srv->ssl_ctx.ciphers);
+#if defined(SSL_CTX_set1_curves_list)
+       ha_free(&srv->ssl_ctx.curves);
+#endif
+#if defined(SSL_CTX_set1_sigalgs_list)
+       ha_free(&srv->ssl_ctx.sigalgs);
+#endif
+#if defined(SSL_CTX_set1_client_sigalgs_list)
+       ha_free(&srv->ssl_ctx.client_sigalgs);
+#endif
 #ifdef HAVE_SSL_CTX_SET_CIPHERSUITES
        ha_free(&srv->ssl_ctx.ciphersuites);
 #endif