From 9d0e129b54aa92d9bdfcdd462683459a0f115df9 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Wed, 10 Feb 2021 10:58:16 +0100 Subject: [PATCH] conf: fix memory leak Fixes: Coverity 1472848 Signed-off-by: Christian Brauner --- src/lxc/conf.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/lxc/conf.c b/src/lxc/conf.c index e34a62c99..5890a3565 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -911,22 +911,23 @@ static int lxc_setup_ttys(struct lxc_conf *conf) return 0; } +define_cleanup_function(struct lxc_tty_info *, lxc_delete_tty); + static int lxc_allocate_ttys(struct lxc_conf *conf) { - struct lxc_terminal_info *tty_new = NULL; + call_cleaner(lxc_delete_tty) struct lxc_tty_info *ttys = &conf->ttys; int ret; - struct lxc_tty_info *ttys = &conf->ttys; /* no tty in the configuration */ if (ttys->max == 0) return 0; - tty_new = malloc(sizeof(struct lxc_terminal_info) * ttys->max); - if (!tty_new) + ttys->tty = zalloc(sizeof(struct lxc_terminal_info) * ttys->max); + if (!ttys->tty) return -ENOMEM; for (size_t i = 0; i < conf->ttys.max; i++) { - struct lxc_terminal_info *tty = &tty_new[i]; + struct lxc_terminal_info *tty = &ttys->tty[i]; tty->ptx = -EBADF; tty->pty = -EBADF; @@ -959,7 +960,7 @@ static int lxc_allocate_ttys(struct lxc_conf *conf) } INFO("Finished creating %zu tty devices", ttys->max); - conf->ttys.tty = move_ptr(tty_new); + move_ptr(ttys); return 0; } -- 2.47.2