Unverified Commit e0624f70 by Christian Brauner Committed by GitHub

Merge pull request #3380 from brauner/2020-04-15/fixes

fixes
parents 3aff3a14 586a3fe8
......@@ -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);
}
......@@ -953,7 +953,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;
}
......
......@@ -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)
......
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