From: Christian Brauner Date: Fri, 12 May 2017 14:33:23 +0000 (+0200) Subject: lxc-attach: allow for situations without /dev/tty X-Git-Tag: lxc-2.1.0~132^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1553%2Fhead;p=thirdparty%2Flxc.git lxc-attach: allow for situations without /dev/tty Closes #1552. Signed-off-by: Christian Brauner --- diff --git a/src/lxc/console.c b/src/lxc/console.c index 3baaed498..8eae7c4a9 100644 --- a/src/lxc/console.c +++ b/src/lxc/console.c @@ -441,7 +441,7 @@ static int lxc_console_peer_default(struct lxc_console *console) console->peer = lxc_unpriv(open(path, O_CLOEXEC | O_RDWR | O_CREAT | O_APPEND, 0600)); if (console->peer < 0) { - ERROR("failed to open \"%s\"", path); + ERROR("failed to open \"%s\": %s", path, strerror(errno)); return -ENOTTY; } DEBUG("using \"%s\" as peer tty device", path); diff --git a/src/lxc/tools/lxc_attach.c b/src/lxc/tools/lxc_attach.c index c5e319fdf..d35ec88c1 100644 --- a/src/lxc/tools/lxc_attach.c +++ b/src/lxc/tools/lxc_attach.c @@ -301,15 +301,12 @@ static int get_pty_on_host(struct lxc_container *c, struct wrapargs *wrap, int * /* In the case of lxc-attach our peer pty will always be the current * controlling terminal. We clear whatever was set by the user for - * lxc.console.path here and set it to "/dev/tty". Doing this will (a) - * prevent segfaults when the container has been setup with - * lxc.console = none and (b) provide an easy way to ensure that we - * always do the correct thing. strdup() must be used since console.path - * is free()ed when we call lxc_container_put(). */ + * lxc.console.path here and set it NULL. lxc_console_peer_default() + * will then try to open /dev/tty. If the process doesn't have a + * controlling terminal we should still proceed. + */ free(conf->console.path); - conf->console.path = strdup("/dev/tty"); - if (!conf->console.path) - return -1; + conf->console.path = NULL; /* Create pty on the host. */ if (lxc_console_create(conf) < 0)