[lxc-devel] [lxc/master] commands_utils: fix socket leak in when adding state client

Piscolero on Github lxc-bot at linuxcontainers.org
Mon Mar 9 14:55:37 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 859 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200309/cad7fc0b/attachment.bin>
-------------- next part --------------
From 18b46cb3dc7133a13c4fa93ea6f508bd4dea405c Mon Sep 17 00:00:00 2001
From: Matthias Hardt <matthias.hardt at gmail.com>
Date: Mon, 9 Mar 2020 15:53:11 +0100
Subject: [PATCH] commands_utils: fix socket leak in when adding state client

If lxc_add_state_client() is called with the container already being in
the desired state the client fd will never be closed and is leaking.
This due to setting stay_connected in lxc_cmd for
LXC_CMD_ADD_STATE_CLIENT. If the desired state isn't already achieved
the client fd will later be closed by calling lxc_cmd_fd_cleanup() but
in the other case the client configuration isn't added to the handlers
state clients. So the client fd has to be closed explicitely.

This is simply tested by starting container A and calling lxc-wait -n A
-s RUNNING.
---
 src/lxc/commands_utils.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lxc/commands_utils.c b/src/lxc/commands_utils.c
index 67edc4ca95..a8f1e17055 100644
--- a/src/lxc/commands_utils.c
+++ b/src/lxc/commands_utils.c
@@ -195,6 +195,7 @@ int lxc_add_state_client(int state_client_fd, struct lxc_handler *handler,
 		lxc_list_add_elem(tmplist, newclient);
 		lxc_list_add_tail(&handler->conf->state_clients, tmplist);
 	} else {
+		close(state_client_fd);
 		return state;
 	}
 


More information about the lxc-devel mailing list