conf: fix memory leak

Fixes: Coverity 1472848 Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent b4e90f9f
...@@ -911,22 +911,23 @@ static int lxc_setup_ttys(struct lxc_conf *conf) ...@@ -911,22 +911,23 @@ static int lxc_setup_ttys(struct lxc_conf *conf)
return 0; return 0;
} }
define_cleanup_function(struct lxc_tty_info *, lxc_delete_tty);
static int lxc_allocate_ttys(struct lxc_conf *conf) 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; int ret;
struct lxc_tty_info *ttys = &conf->ttys;
/* no tty in the configuration */ /* no tty in the configuration */
if (ttys->max == 0) if (ttys->max == 0)
return 0; return 0;
tty_new = malloc(sizeof(struct lxc_terminal_info) * ttys->max); ttys->tty = zalloc(sizeof(struct lxc_terminal_info) * ttys->max);
if (!tty_new) if (!ttys->tty)
return -ENOMEM; return -ENOMEM;
for (size_t i = 0; i < conf->ttys.max; i++) { 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->ptx = -EBADF;
tty->pty = -EBADF; tty->pty = -EBADF;
...@@ -959,7 +960,7 @@ static int lxc_allocate_ttys(struct lxc_conf *conf) ...@@ -959,7 +960,7 @@ static int lxc_allocate_ttys(struct lxc_conf *conf)
} }
INFO("Finished creating %zu tty devices", ttys->max); INFO("Finished creating %zu tty devices", ttys->max);
conf->ttys.tty = move_ptr(tty_new); move_ptr(ttys);
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment