zebra: Fix leaked sockets in rtadv.c

Coverity Scan #709790
In zebra/rtadv.c: rtadv_make_socket leaks socket for error cases.
Added lines to close the socket for each error case or return.

Signed-off-by: Morgan Stewart <morgan@cumulusnetworks.com>
(cherry picked from commit 26b663da7ea8a3efae816d6e7fda293bdc1082f5)
This commit is contained in:
Morgan Stewart 2015-09-16 13:17:54 -04:00 committed by Daniel Walton
parent 6e9b0ac1a9
commit a5c304ab35

View File

@ -630,23 +630,41 @@ rtadv_make_socket (void)
safe_strerror (errno) );
if (sock < 0)
return -1;
{
close (sock);
return -1;
}
ret = setsockopt_ipv6_pktinfo (sock, 1);
if (ret < 0)
return ret;
{
close (sock);
return ret;
}
ret = setsockopt_ipv6_multicast_loop (sock, 0);
if (ret < 0)
return ret;
{
close (sock);
return ret;
}
ret = setsockopt_ipv6_unicast_hops (sock, 255);
if (ret < 0)
return ret;
{
close (sock);
return ret;
}
ret = setsockopt_ipv6_multicast_hops (sock, 255);
if (ret < 0)
return ret;
{
close (sock);
return ret;
}
ret = setsockopt_ipv6_hoplimit (sock, 1);
if (ret < 0)
return ret;
{
close (sock);
return ret;
}
ICMP6_FILTER_SETBLOCKALL(&filter);
ICMP6_FILTER_SETPASS (ND_ROUTER_SOLICIT, &filter);