]> The Tcpdump Group git mirrors - libpcap/commitdiff
If setting up the server socket fails, close the socket before returning.
authorGuy Harris <[email protected]>
Sat, 7 Oct 2017 23:13:46 +0000 (16:13 -0700)
committerGuy Harris <[email protected]>
Sat, 7 Oct 2017 23:13:46 +0000 (16:13 -0700)
Fixes Coverity CID 1419008.

sockutils.c

index ff95a42004b84e3dc9151bf366ecd1eb24a0ce45..dba739dc68a45d6050bfe16c126fbe4d42c8bc5b 100644 (file)
@@ -312,6 +312,7 @@ SOCKET sock_open(struct addrinfo *addrinfo, int server, int nconn, char *errbuf,
                        {
                                if (errbuf)
                                        pcap_snprintf(errbuf, errbuflen, "setsockopt(IPV6_BINDV6ONLY)");
+                               closesocket(sock);
                                return -1;
                        }
                }
@@ -321,6 +322,7 @@ SOCKET sock_open(struct addrinfo *addrinfo, int server, int nconn, char *errbuf,
                if (bind(sock, addrinfo->ai_addr, (int) addrinfo->ai_addrlen) != 0)
                {
                        sock_geterror("bind(): ", errbuf, errbuflen);
+                       closesocket(sock);
                        return -1;
                }
 
@@ -328,6 +330,7 @@ SOCKET sock_open(struct addrinfo *addrinfo, int server, int nconn, char *errbuf,
                        if (listen(sock, nconn) == -1)
                        {
                                sock_geterror("listen(): ", errbuf, errbuflen);
+                               closesocket(sock);
                                return -1;
                        }