diff --git a/src/lxc/conf.c b/src/lxc/conf.c index d7984bd0f..76cb255d6 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -968,6 +968,8 @@ int lxc_allocate_ttys(const char *name, struct lxc_conf *conf) for (i = 0; i < ttys->max; i++) { struct lxc_terminal_info *tty = &ttys->tty[i]; + tty->master = -EBADF; + tty->slave = -EBADF; ret = openpty(&tty->master, &tty->slave, tty->name, NULL, NULL); if (ret) { @@ -1004,11 +1006,21 @@ void lxc_delete_tty(struct lxc_tty_info *ttys) { int i; + if (!ttys->tty) + return; + for (i = 0; i < ttys->max; i++) { struct lxc_terminal_info *tty = &ttys->tty[i]; - close(tty->master); - close(tty->slave); + if (tty->master >= 0) { + close(tty->master); + tty->master = -EBADF; + } + + if (tty->slave >= 0) { + close(tty->slave); + tty->slave = -EBADF; + } } free(ttys->tty); diff --git a/src/lxc/start.c b/src/lxc/start.c index 048b97b4f..7ec151e1c 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -619,8 +619,6 @@ void lxc_zero_handler(struct lxc_handler *handler) memset(handler, 0, sizeof(struct lxc_handler)); - handler->ns_clone_flags = -1; - handler->pinfd = -1; handler->sigfd = -1;