]> granicus.if.org Git - sudo/commitdiff
When a terminal device is closed, SIGHUP is sent to the controlling
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 15 Sep 2015 16:30:36 +0000 (10:30 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 15 Sep 2015 16:30:36 +0000 (10:30 -0600)
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

src/exec.c

index c9a3712d7d0af60e702f30300872ec8e03ed084a..aeedf8dc26cc022a91a24a0b801214dee3443ea6 100644 (file)
@@ -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)