From edc75fa4f4f0dbadf7cb21a7511626dd35a3c330 Mon Sep 17 00:00:00 2001 From: Christian Beier Date: Sat, 10 Mar 2012 17:53:20 +0100 Subject: [PATCH] IPv6 support for LibVNCServer, part onepointseven: Plug a memleak. We have to properly free the addrinfo struct when jumping out of the function. --- libvncserver/sockets.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libvncserver/sockets.c b/libvncserver/sockets.c index 3b5ef60..723e769 100644 --- a/libvncserver/sockets.c +++ b/libvncserver/sockets.c @@ -893,6 +893,7 @@ rfbListenOnTCP6Port(int port, if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&one, sizeof(one)) < 0) { rfbLogPerror("rfbListenOnTCP6Port error in setsockopt IPV6_V6ONLY"); closesocket(sock); + freeaddrinfo(servinfo); return -1; } #endif @@ -900,6 +901,7 @@ rfbListenOnTCP6Port(int port, if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one)) < 0) { rfbLogPerror("rfbListenOnTCP6Port: error in setsockopt SO_REUSEADDR"); closesocket(sock); + freeaddrinfo(servinfo); return -1; } @@ -913,6 +915,7 @@ rfbListenOnTCP6Port(int port, if (p == NULL) { rfbLogPerror("rfbListenOnTCP6Port: error in bind IPv6 socket"); + freeaddrinfo(servinfo); return -1; }