When a terminal device is closed, SIGHUP is sent to the controlling
process associated with that terminal. It is not sent to the entire process group so sudo needs to relay SIGHUP to the command when it is not being run in a new pty. Bug #719
This commit is contained in:
@@ -407,6 +407,8 @@ sudo_execute(struct command_details *details, struct command_status *cstat)
|
||||
#endif
|
||||
if (sudo_sigaction(SIGTERM, &sa, NULL) != 0)
|
||||
sudo_warn(U_("unable to set handler for signal %d"), SIGTERM);
|
||||
if (sudo_sigaction(SIGHUP, &sa, NULL) != 0)
|
||||
sudo_warn(U_("unable to set handler for signal %d"), SIGHUP);
|
||||
if (sudo_sigaction(SIGALRM, &sa, NULL) != 0)
|
||||
sudo_warn(U_("unable to set handler for signal %d"), SIGALRM);
|
||||
if (sudo_sigaction(SIGPIPE, &sa, NULL) != 0)
|
||||
@@ -424,8 +426,7 @@ sudo_execute(struct command_details *details, struct command_status *cstat)
|
||||
* When not running the command in a pty, we do not want to
|
||||
* forward signals generated by the kernel that the child will
|
||||
* already have received either by virtue of being in the
|
||||
* controlling tty's process group (SIGINT, SIGQUIT) or because
|
||||
* the session is terminating (SIGHUP).
|
||||
* controlling tty's process group (SIGINT, SIGQUIT).
|
||||
*/
|
||||
#ifdef SA_SIGINFO
|
||||
if (!log_io) {
|
||||
@@ -433,8 +434,6 @@ sudo_execute(struct command_details *details, struct command_status *cstat)
|
||||
sa.sa_sigaction = handler_user_only;
|
||||
}
|
||||
#endif
|
||||
if (sudo_sigaction(SIGHUP, &sa, NULL) != 0)
|
||||
sudo_warn(U_("unable to set handler for signal %d"), SIGHUP);
|
||||
if (sudo_sigaction(SIGINT, &sa, NULL) != 0)
|
||||
sudo_warn(U_("unable to set handler for signal %d"), SIGINT);
|
||||
if (sudo_sigaction(SIGQUIT, &sa, NULL) != 0)
|
||||
|
Reference in New Issue
Block a user