diff --git a/src/exec_pty.c b/src/exec_pty.c index b11ba079a..1b6427cc1 100644 --- a/src/exec_pty.c +++ b/src/exec_pty.c @@ -271,7 +271,8 @@ check_foreground(void) /* * Suspend sudo if the underlying command is suspended. - * Returns SIGUSR1 if the child should be resume in foreground else SIGUSR2. + * Returns SIGCONT_FG if the child should be resume in the + * foreground or SIGCONT_BG if it is a background process. */ int suspend_parent(int signo) @@ -295,7 +296,7 @@ suspend_parent(int signo) } while (!n && errno == EINTR); ttymode = TERM_RAW; } - rval = SIGUSR1; /* resume child in foreground */ + rval = SIGCONT_FG; /* resume child in foreground */ break; } ttymode = TERM_RAW; @@ -342,7 +343,7 @@ suspend_parent(int signo) } sigaction(signo, &osa, NULL); - rval = ttymode == TERM_RAW ? SIGUSR1 : SIGUSR2; + rval = ttymode == TERM_RAW ? SIGCONT_FG : SIGCONT_BG; break; } @@ -709,14 +710,14 @@ deliver_signal(pid_t pid, int signo) case SIGALRM: terminate_child(pid, TRUE); break; - case SIGUSR1: + case SIGCONT_FG: /* foreground process, grant it controlling tty. */ do { status = tcsetpgrp(io_fds[SFD_SLAVE], pid); } while (status == -1 && errno == EINTR); killpg(pid, SIGCONT); break; - case SIGUSR2: + case SIGCONT_BG: /* background process, I take controlling tty. */ do { status = tcsetpgrp(io_fds[SFD_SLAVE], getpid()); diff --git a/src/sudo_exec.h b/src/sudo_exec.h index 309f9c16d..4a7d34222 100644 --- a/src/sudo_exec.h +++ b/src/sudo_exec.h @@ -17,6 +17,12 @@ #ifndef _SUDO_EXEC_H #define _SUDO_EXEC_H +/* + * Special values to indicate whether continuing in foreground or background. + */ +#define SIGCONT_FG -2 +#define SIGCONT_BG -3 + /* * Symbols shared between exec.c and exec_pty.c */