From: Lennart Poettering Date: Thu, 26 Oct 2017 16:47:34 +0000 (+0200) Subject: execute: check whether we are actually on a TTY before doing TIOCSCTTY X-Git-Tag: v236~181^2~21 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1fb0682e78d0869d85a0e9b1f46a3490257aac6e;p=thirdparty%2Fsystemd.git execute: check whether we are actually on a TTY before doing TIOCSCTTY Given that Linux assigns the same ioctl numbers ot multiple subsystems, we should be careful when invoking ioctls, so that we don't end up calling something we wouldn't want to call. --- diff --git a/src/core/execute.c b/src/core/execute.c index 8083cccab25..547ab40657a 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -425,8 +425,10 @@ static int setup_input( return -errno; /* Try to make this the controlling tty, if it is a tty, and reset it */ - (void) ioctl(STDIN_FILENO, TIOCSCTTY, context->std_input == EXEC_INPUT_TTY_FORCE); - (void) reset_terminal_fd(STDIN_FILENO, true); + if (isatty(STDIN_FILENO)) { + (void) ioctl(STDIN_FILENO, TIOCSCTTY, context->std_input == EXEC_INPUT_TTY_FORCE); + (void) reset_terminal_fd(STDIN_FILENO, true); + } return STDIN_FILENO; }