From 6b54308fc15dd5a3ad5b0c1b97d39debda8871e7 Mon Sep 17 00:00:00 2001 From: Serge Hallyn Date: Fri, 30 Oct 2015 05:14:12 +0000 Subject: [PATCH] only re-open fds if stdin is a tty MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Serge Hallyn Acked-by: Stéphane Graber --- src/lxc/lxc_usernsexec.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/lxc/lxc_usernsexec.c b/src/lxc/lxc_usernsexec.c index 26608d6a5..37d92fbed 100644 --- a/src/lxc/lxc_usernsexec.c +++ b/src/lxc/lxc_usernsexec.c @@ -278,20 +278,22 @@ int main(int argc, char *argv[]) memset(ttyname0, '\0', sizeof(ttyname0)); memset(ttyname1, '\0', sizeof(ttyname1)); memset(ttyname2, '\0', sizeof(ttyname2)); - ret = readlink("/proc/self/fd/0", ttyname0, sizeof(ttyname0)); - if (ret < 0) { - perror("unable to open stdin."); - exit(1); - } - ret = readlink("/proc/self/fd/1", ttyname1, sizeof(ttyname1)); - if (ret < 0) { - printf("Warning: unable to open stdout, continuing."); - memset(ttyname1, '\0', sizeof(ttyname1)); - } - ret = readlink("/proc/self/fd/2", ttyname2, sizeof(ttyname2)); - if (ret < 0) { - printf("Warning: unable to open stderr, continueing."); - memset(ttyname2, '\0', sizeof(ttyname2)); + if (isatty(0)) { + ret = readlink("/proc/self/fd/0", ttyname0, sizeof(ttyname0)); + if (ret < 0) { + perror("unable to open stdin."); + exit(1); + } + ret = readlink("/proc/self/fd/1", ttyname1, sizeof(ttyname1)); + if (ret < 0) { + printf("Warning: unable to open stdout, continuing."); + memset(ttyname1, '\0', sizeof(ttyname1)); + } + ret = readlink("/proc/self/fd/2", ttyname2, sizeof(ttyname2)); + if (ret < 0) { + printf("Warning: unable to open stderr, continueing."); + memset(ttyname2, '\0', sizeof(ttyname2)); + } } lxc_list_init(&active_map); -- 2.47.3