From: Tatsuo Ishii Date: Tue, 23 Dec 2025 08:13:34 +0000 (+0900) Subject: Fix resource leak in pcp_connect. X-Git-Url: http://git.postgresql.org/gitweb/irc:/static/graphics?a=commitdiff_plain;p=pgpool2.git Fix resource leak in pcp_connect. The function did not call freeaddrinfo() in some places. Backpatch-through: v4.6 --- 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) {