pgpool2.git / summary / log / commit / refs
commit 39fc32ada4eef450a7315ba6566ae82bcc4ecdec
Author: Tatsuo Ishii <ishii@postgresql.org>
Date: Tue Dec 23 08:13:34 2025 +0000
Fix resource leak in pcp_connect.
The function did not call freeaddrinfo() in some places.
Backpatch-through: v4.6
src/libs/pcp/pcp.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/libs/pcp/pcp.c b/src/libs/pcp/pcp.c
index 3992eeeb7..f8a635065 100644
--- a/src/libs/pcp/pcp.c
+++ b/src/libs/pcp/pcp.c
@@ -196,6 +196,7 @@ pcp_connect(char *hostname, int port, char *username, char *password, FILE *Pfde
pcp_internal_error(pcpConn,
"ERROR: failed to create INET domain socket with error \"%s\"",
strerror(errno));
+ freeaddrinfo(res);
return pcpConn;
}
@@ -203,6 +204,7 @@ pcp_connect(char *hostname, int port, char *username, char *password, FILE *Pfde
(char *) &on, sizeof(on)) < 0)
{
close(fd);
+ freeaddrinfo(res);
pcp_internal_error(pcpConn,
"ERROR: set socket option failed with error \"%s\"", strerror(errno));
pcpConn->connState = PCP_CONNECTION_BAD;
@@ -212,6 +214,7 @@ pcp_connect(char *hostname, int port, char *username, char *password, FILE *Pfde
if (connect(fd, walk->ai_addr, walk->ai_addrlen) < 0)
{
close(fd);
+ freeaddrinfo(res);
pcp_internal_error(pcpConn,
"ERROR: connection to host \"%s\" failed with error \"%s\"", hostname, strerror(errno));
pcpConn->connState = PCP_CONNECTION_BAD;
@@ -220,6 +223,7 @@ pcp_connect(char *hostname, int port, char *username, char *password, FILE *Pfde
break; /* successfully connected */
}
+ freeaddrinfo(res);
/* no address available */
if (fd == -1)
{
[parent: 4990d8bc9a4f]