From: Vincent Bernat Date: Sun, 21 Mar 2021 10:00:59 +0000 (+0100) Subject: netlink: fix socket leak on some error condition X-Git-Tag: 1.0.9~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2763a712853e3b0a777ea2fc0fae4efbc496b645;p=thirdparty%2Flldpd.git netlink: fix socket leak on some error condition --- diff --git a/src/daemon/netlink.c b/src/daemon/netlink.c index 5c89ade9..1e6013af 100644 --- a/src/daemon/netlink.c +++ b/src/daemon/netlink.c @@ -109,13 +109,17 @@ netlink_connect(struct lldpd *cfg, int protocol, unsigned groups) } if (NETLINK_SEND_BUFSIZE && netlink_socket_set_buffer_size(s, - SO_SNDBUF, "SO_SNDBUF", NETLINK_SEND_BUFSIZE) == -1) + SO_SNDBUF, "SO_SNDBUF", NETLINK_SEND_BUFSIZE) == -1) { + close(s); return -1; + } int rc = netlink_socket_set_buffer_size(s, SO_RCVBUF, "SO_RCVBUF", NETLINK_RECEIVE_BUFSIZE); switch (rc) { - case -1: return -1; + case -1: + close(s); + return -1; case -2: cfg->g_netlink->nl_socket_recv_size = 0; break; default: cfg->g_netlink->nl_socket_recv_size = rc; break; }