]> granicus.if.org Git - sudo/commitdiff
Zero out sigaction_t before use in case it has non-standard entries.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 2 Nov 2008 14:45:31 +0000 (14:45 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 2 Nov 2008 14:45:31 +0000 (14:45 +0000)
logging.c
mon_systrace.c
parse.c
sudo.c
sudo_edit.c
tgetpass.c
visudo.c

index 57ac3cf8aba96ef3263eac5ca25a53ca1681b7f7..a61792e48ba52538e17b8fcac13c83b07f60df7e 100644 (file)
--- a/logging.c
+++ b/logging.c
@@ -504,6 +504,7 @@ send_mail(line)
     closefrom(STDERR_FILENO + 1);
 
     /* Ignore SIGPIPE in case mailer exits prematurely (or is missing). */
+    zero_bytes(&sa, sizeof(sa));
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = 0;
     sa.sa_handler = SIG_IGN;
index 26be1391399f6db8c955f131ed7eb0d79bd7a8d3..e8ccb6402713ad0f97032a0e39ad555c566c10ec 100644 (file)
@@ -115,6 +115,7 @@ systrace_attach(pid)
     sigfillset(&set);
     if (sigprocmask(SIG_BLOCK, &set, &oset) != 0)
        error(1, "sigprocmask");
+    zero_bytes(&sa, sizeof(sa));
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = 0;
     sa.sa_handler = catchsig;
@@ -152,6 +153,7 @@ systrace_attach(pid)
 
     /* set signal state for tracer */
     dodetach = 0;
+    zero_bytes(&sa, sizeof(sa));
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = 0;
     sa.sa_handler = catchsig;
diff --git a/parse.c b/parse.c
index c58ac38ada64be21e5c8f659d18b5e891e73a889..f8bb455e282aee30b5b57ff9d49974c462286f08 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -131,6 +131,7 @@ sudo_file_parse(nss)
  * Update the defaults based on what was set by sudoers.
  * If skip_cmnd is 1, skip DEFAULTS_CMND, if it is 0, skip all others.
  * Returns TRUE on success and FALSE on failure.
+ * XXX - move to defaults.c or match.c
  */
 int
 update_defaults(what)
diff --git a/sudo.c b/sudo.c
index 17de1116fa5e71fde6632d27b36e097b9219c2eb..a91b4b1b7d2a134d0a96801f3cbe115c79eb9a75 100644 (file)
--- a/sudo.c
+++ b/sudo.c
@@ -202,6 +202,7 @@ main(argc, argv, envp)
      *  us at some point and avoid the logging.
      *  Install handler to wait for children when they exit.
      */
+    zero_bytes(&sa, sizeof(sa));
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_RESTART;
     sa.sa_handler = SIG_IGN;
index 23669d8c08f52348e40cb6063f2277b1d8d76f74..6b82ee36ee7d7d49b55bb7c043c94bc45a2f29d9 100644 (file)
@@ -79,7 +79,6 @@ sudo_edit(argc, argv, envp)
     char **nargv, **ap, *editor, *cp;
     char buf[BUFSIZ];
     int error, i, ac, ofd, tfd, nargc, rval, tmplen, wasblank;
-    sigaction_t sa;
     struct stat sb;
     struct timespec ts1, ts2;
     struct tempfile {
@@ -218,9 +217,6 @@ sudo_edit(argc, argv, envp)
     nargv[ac] = NULL;
 
     /* Allow the editor to be suspended. */
-    sigemptyset(&sa.sa_mask);
-    sa.sa_flags = SA_RESTART;
-    sa.sa_handler = SIG_DFL;
     (void) sigaction(SIGTSTP, &saved_sa_tstp, NULL);
 
     /*
index ee3e56d04933718abc40fe30745bda35570b972c..9f31c1727407d30be93227caba461dff8812283c 100644 (file)
@@ -154,6 +154,7 @@ restart:
      * Catch signals that would otherwise cause the user to end
      * up with echo turned off in the shell.
      */
+    zero_bytes(&sa, sizeof(sa));
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_INTERRUPT;        /* don't restart system calls */
     sa.sa_handler = handler;
@@ -260,6 +261,7 @@ sudo_askpass(prompt)
     }
 
     /* Ignore SIGPIPE in case child exits prematurely */
+    zero_bytes(&sa, sizeof(sa));
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = 0;
     sa.sa_handler = SIG_IGN;
index eb4b86a4509538055da98ba6972650fd5645b276..6d7d36446bbf2c13daf3c49e11f3f8966496cbbd 100644 (file)
--- a/visudo.c
+++ b/visudo.c
@@ -637,6 +637,7 @@ setup_signals()
        /*
         * Setup signal handlers to cleanup nicely.
         */
+       zero_bytes(&sa, sizeof(sa));
        sigemptyset(&sa.sa_mask);
        sa.sa_flags = SA_RESTART;
        sa.sa_handler = quit;