diff options
author | Morgan Stewart <morgan@cumulusnetworks.com> | 2015-09-16 13:17:54 -0400 |
---|---|---|
committer | Paul Jakma <paul@quagga.net> | 2015-09-24 15:26:45 +0100 |
commit | 26b663da7ea8a3efae816d6e7fda293bdc1082f5 (patch) | |
tree | dfaf1057216d4dd0e750ff1a2aa2a2653a1c6202 | |
parent | 782c882077b5a63213b3d160535d5e8259f6df61 (diff) | |
download | quagga-26b663da7ea8a3efae816d6e7fda293bdc1082f5.tar.bz2 quagga-26b663da7ea8a3efae816d6e7fda293bdc1082f5.tar.xz |
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>
-rw-r--r-- | zebra/rtadv.c | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/zebra/rtadv.c b/zebra/rtadv.c index be4aeb1b..f5d5b4ad 100644 --- a/zebra/rtadv.c +++ b/zebra/rtadv.c @@ -534,23 +534,41 @@ rtadv_make_socket (vrf_id_t vrf_id) /* When we can't make ICMPV6 socket simply back. Router advertisement feature will not be supported. */ 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); |