]> granicus.if.org Git - sudo/commitdiff
When not logging I/O install a handler for SIGCONT and deliver it
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 24 Aug 2010 12:42:47 +0000 (08:42 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 24 Aug 2010 12:42:47 +0000 (08:42 -0400)
to the command upon resume.  Fixes bugzilla #431

src/exec.c

index 76875e44ba7fcc49ba583917db328a0f623ead43..d2e80291c5f68f77ea711e3b3f389b88b9a17de5 100644 (file)
@@ -96,8 +96,15 @@ static int fork_cmnd(struct command_details *details, char *argv[],
     char *envp[], int sv[2])
 {
     struct command_status cstat;
+    sigaction_t sa;
     int pid;
 
+    zero_bytes(&sa, sizeof(sa));
+    sigemptyset(&sa.sa_mask);
+    sa.sa_flags = SA_INTERRUPT; /* do not restart syscalls */
+    sa.sa_handler = handler;
+    sigaction(SIGCONT, &sa, NULL);
+
     pid = fork();
     switch (pid) {
     case -1: