From 6f18b9c4834c36207bce152603927a028159c39c Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Fri, 12 May 2017 16:33:23 +0200 Subject: [PATCH] lxc-attach: allow for situations without /dev/tty Closes #1552. Signed-off-by: Christian Brauner --- src/lxc/console.c | 2 +- src/lxc/tools/lxc_attach.c | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) 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) -- 2.47.2