O_NOCTTY has no effect when opening /dev/tty as the open can only

succeed if there is already a controlling tty.
This commit is contained in:
Todd C. Miller
2016-05-16 11:17:20 -06:00
parent 3b39377246
commit a2e541aef8
5 changed files with 6 additions and 6 deletions

View File

@@ -1298,7 +1298,7 @@ tty_present(void)
#if defined(HAVE_STRUCT_KINFO_PROC2_P_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_P_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV) || defined(HAVE_STRUCT_PSINFO_PR_TTYDEV) || defined(HAVE_PSTAT_GETPROC) || defined(__linux__)
return user_ttypath != NULL;
#else
int fd = open(_PATH_TTY, O_RDWR|O_NOCTTY);
int fd = open(_PATH_TTY, O_RDWR);
if (fd != -1)
close(fd);
return fd != -1;

View File

@@ -562,7 +562,7 @@ dispatch_signal(struct sudo_event_base *evbase, pid_t child,
sigaction_t sa, osa;
pid_t saved_pgrp = -1;
int signo = WSTOPSIG(status);
int fd = open(_PATH_TTY, O_RDWR|O_NOCTTY, 0);
int fd = open(_PATH_TTY, O_RDWR);
if (fd != -1) {
saved_pgrp = tcgetpgrp(fd);
if (saved_pgrp == -1) {

View File

@@ -181,7 +181,7 @@ pty_setup(uid_t uid, const char *tty, const char *utmp_user)
{
debug_decl(pty_setup, SUDO_DEBUG_EXEC);
io_fds[SFD_USERTTY] = open(_PATH_TTY, O_RDWR|O_NOCTTY, 0);
io_fds[SFD_USERTTY] = open(_PATH_TTY, O_RDWR);
if (io_fds[SFD_USERTTY] != -1) {
if (!get_pty(&io_fds[SFD_MASTER], &io_fds[SFD_SLAVE],
slavename, sizeof(slavename), uid))

View File

@@ -506,7 +506,7 @@ get_user_info(struct user_details *ud)
ud->ppid = getppid();
ud->pgid = getpgid(0);
ud->tcpgid = -1;
fd = open(_PATH_TTY, O_RDWR|O_NOCTTY, 0);
fd = open(_PATH_TTY, O_RDWR);
if (fd != -1) {
ud->tcpgid = tcgetpgrp(fd);
close(fd);

View File

@@ -125,7 +125,7 @@ restart:
need_restart = 0;
/* Open /dev/tty for reading/writing if possible else use stdin/stderr. */
if (ISSET(flags, TGP_STDIN) ||
(input = output = open(_PATH_TTY, O_RDWR|O_NOCTTY)) == -1) {
(input = output = open(_PATH_TTY, O_RDWR)) == -1) {
input = STDIN_FILENO;
output = STDERR_FILENO;
}
@@ -372,7 +372,7 @@ tty_present(void)
int fd;
debug_decl(tty_present, SUDO_DEBUG_UTIL)
if ((fd = open(_PATH_TTY, O_RDWR|O_NOCTTY)) != -1)
if ((fd = open(_PATH_TTY, O_RDWR)) != -1)
close(fd);
debug_return_bool(fd != -1);
#endif