From: Morgan Stewart Date: Wed, 16 Sep 2015 17:17:54 +0000 (-0400) Subject: zebra: Fix leaked sockets in rtadv.c X-Git-Tag: frr-2.0-rc1~717 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=a5c304ab3583ce061b2d568077b7a33267eb8055;p=mirror%2Ffrr.git 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 (cherry picked from commit 26b663da7ea8a3efae816d6e7fda293bdc1082f5) --- diff --git a/zebra/rtadv.c b/zebra/rtadv.c index f9caa85b19..89087a9eca 100644 --- a/zebra/rtadv.c +++ b/zebra/rtadv.c @@ -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);