From 2763a712853e3b0a777ea2fc0fae4efbc496b645 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Sun, 21 Mar 2021 11:00:59 +0100 Subject: [PATCH] netlink: fix socket leak on some error condition --- src/daemon/netlink.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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; } -- 2.39.5