From cd2b09ed75c28ef5e82698972582c99e6b423134 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Thu, 13 Dec 2012 20:30:50 -0500 Subject: [PATCH] Fix: memory leak in add relayd socket error path Signed-off-by: David Goulet --- src/common/consumer.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/common/consumer.c b/src/common/consumer.c index 3ecb72e21..4f83639d5 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -2714,7 +2714,7 @@ int consumer_add_relayd_socket(int net_seq_idx, int sock_type, struct pollfd *consumer_sockpoll, struct lttcomm_sock *relayd_sock, unsigned int sessiond_id) { - int fd = -1, ret = -1; + int fd = -1, ret = -1, relayd_created = 0; enum lttng_error_code ret_code = LTTNG_OK; struct consumer_relayd_sock_pair *relayd; struct consumer_relayd_session_id *relayd_id_node; @@ -2738,6 +2738,7 @@ int consumer_add_relayd_socket(int net_seq_idx, int sock_type, goto error; } relayd->sessiond_session_id = (uint64_t) sessiond_id; + relayd_created = 1; } /* Poll on consumer socket. */ @@ -2853,6 +2854,14 @@ error: PERROR("close received socket"); } } + + if (relayd_created) { + /* We just want to cleanup. Ignore ret value. */ + (void) relayd_close(&relayd->control_sock); + (void) relayd_close(&relayd->data_sock); + free(relayd); + } + return ret; } -- 2.34.1