[lxc-devel] [lxc/master] fixes

brauner on Github lxc-bot at linuxcontainers.org
Wed Apr 15 09:31:43 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200415/29e6aacb/attachment.bin>
-------------- next part --------------
From ba7536c0707890d478406484ea5a2ac391d4df4b Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Wed, 15 Apr 2020 11:15:56 +0200
Subject: [PATCH 1/2] memory_utils: directly NULL ptr in free_disarm()

This should keep coverity happy.

Fixes: Coverity 1461757.
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
 src/lxc/memory_utils.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lxc/memory_utils.h b/src/lxc/memory_utils.h
index 29878fb67d..d3b68a1e90 100644
--- a/src/lxc/memory_utils.h
+++ b/src/lxc/memory_utils.h
@@ -41,10 +41,10 @@ define_cleanup_function(FILE *, fclose);
 define_cleanup_function(DIR *, closedir);
 #define __do_closedir call_cleaner(closedir)
 
-#define free_disarm(ptr)       \
-	({                     \
-		free(ptr);     \
-		move_ptr(ptr); \
+#define free_disarm(ptr)    \
+	({                  \
+		free(ptr);  \
+		ptr = NULL; \
 	})
 
 static inline void free_disarm_function(void *ptr)

From a1f3b050fce63581fc413267a11e8320fea1c3a4 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Wed, 15 Apr 2020 11:30:45 +0200
Subject: [PATCH 2/2] conf: fix tty cleanup

Fixes: Coverity 1461755.
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
 src/lxc/conf.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 45acc71a91..45a7db1e9f 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -901,11 +901,13 @@ static int lxc_setup_ttys(struct lxc_conf *conf)
 	return 0;
 }
 
+define_cleanup_function(struct lxc_tty_info *, lxc_delete_tty);
+
 int lxc_allocate_ttys(struct lxc_conf *conf)
 {
-	__do_free struct lxc_terminal_info *tty_new = NULL;
+	struct lxc_terminal_info *tty_new = NULL;
 	int ret;
-	struct lxc_tty_info *ttys = &conf->ttys;
+	call_cleaner(lxc_delete_tty) struct lxc_tty_info *ttys = &conf->ttys;
 
 	/* no tty in the configuration */
 	if (ttys->max == 0)
@@ -924,14 +926,12 @@ int lxc_allocate_ttys(struct lxc_conf *conf)
 		ret = openpty(&tty->master, &tty->slave, NULL, NULL, NULL);
 		if (ret < 0) {
 			ttys->max = i;
-			lxc_delete_tty(ttys);
 			return log_error_errno(-ENOTTY, ENOTTY, "Failed to create tty %zu", i);
 		}
 
 		ret = ttyname_r(tty->slave, tty->name, sizeof(tty->name));
 		if (ret < 0) {
 			ttys->max = i;
-			lxc_delete_tty(ttys);
 			return log_error_errno(-ENOTTY, ENOTTY, "Failed to retrieve name of tty %zu slave", i);
 		}
 
@@ -954,6 +954,7 @@ int lxc_allocate_ttys(struct lxc_conf *conf)
 
 	INFO("Finished creating %zu tty devices", ttys->max);
 	ttys->tty = move_ptr(tty_new);
+	move_ptr(ttys);
 	return 0;
 }
 


More information about the lxc-devel mailing list