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]