Memleak: sock_connect() needs to call freeaddrinfo()
authorWilfried Goesgens <dothebart@citadel.org>
Sun, 14 Nov 2010 22:07:10 +0000 (23:07 +0100)
committerWilfried Goesgens <dothebart@citadel.org>
Sun, 14 Nov 2010 22:07:10 +0000 (23:07 +0100)
citadel/clientsocket.c

index d8a3e6b017de5a3d919d6303b4c0957542afd3d0..54bceb7a5f4468ffbd91a1f06071a925e3e47765 100644 (file)
@@ -96,10 +96,12 @@ int sock_connect(char *host, char *service)
                sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
                if (sock < 0) {
                        CtdlLogPrintf(CTDL_ERR, "socket() failed: %s\n", strerror(errno));
+                       freeaddrinfo(res);
                        return(-1);
                }
                rc = connect(sock, ai->ai_addr, ai->ai_addrlen);
                if (rc >= 0) {
+                        freeaddrinfo(res);
                        return(sock);
                }
                else {
@@ -107,7 +109,7 @@ int sock_connect(char *host, char *service)
                        close(sock);
                }
        }
-
+       freeaddrinfo(res);
        return(-1);
 }