From 596f74bf1a41e53fb4138a33f713fabdce73500e Mon Sep 17 00:00:00 2001 From: Timo Kokkonen Date: Sun, 25 Oct 2020 18:07:16 +0200 Subject: [PATCH] network_parser: Fix fd leak due to missing close after connect() fail If connect() fails, we still have the socket and it must be closed that was created when we call socket() earlier. Signed-off-by: Timo Kokkonen --- network_parser.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/network_parser.c b/network_parser.c index 0e8475a..7e2b95e 100644 --- a/network_parser.c +++ b/network_parser.c @@ -207,7 +207,7 @@ static int network_multi_parser(char ***rrd_data, const char **parser_data, ret = connect(data->fd, (struct sockaddr *)&data->addr, sizeof(data->addr)); if (ret < 0) { pr_err("Failed to connect to %s: %m\n", data_addrstr(data)); - return -1; + goto out_close_noderegister; } /* Send the last update timestamp to every host */ @@ -275,6 +275,7 @@ out_close: */ if (data->fd != -1) { register_event_handler(&data->ev, EPOLL_CTL_DEL); +out_close_noderegister: close(data->fd); data->fd = -1; } -- 2.45.0