]> granicus.if.org Git - sudo/commitdiff
added posic signals
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 6 Jun 1994 20:57:59 +0000 (20:57 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 6 Jun 1994 20:57:59 +0000 (20:57 +0000)
visudo.c

index aff259dc0199060927c6abb5e9ecfedc4b1d148d..4ac72a835b808f259c04e191c4fbfd383a17330b 100644 (file)
--- a/visudo.c
+++ b/visudo.c
@@ -93,6 +93,9 @@ main(argc, argv)
 #ifdef ENV_EDITOR
     char * Editor;
 #endif /* ENV_EDITOR */
+#ifdef POSIX_SIGNALS
+    struct sigaction action;
+#endif POSIX_SIGNALS
 
     Argv = argv;
 
@@ -112,6 +115,22 @@ main(argc, argv)
     /*
      * handle the signals
      */
+#ifdef POSIX_SIGNALS
+    (void) bzero((char *)(&action), sizeof(action));
+    action.sa_handler = Exit;
+    action.sa_flags = SA_RESETHAND;
+    (void) sigaction(SIGILL, &action, NULL);
+    (void) sigaction(SIGTRAP, &action, NULL);
+    (void) sigaction(SIGBUS, &action, NULL);
+    (void) sigaction(SIGSEGV, &action, NULL);
+    (void) sigaction(SIGTERM, &action, NULL);
+
+    action.sa_handler = SIG_IGN;
+    action.sa_flags = 0;
+    (void) sigaction(SIGHUP, &action, NULL);
+    (void) sigaction(SIGINT, &action, NULL);
+    (void) sigaction(SIGQUIT, &action, NULL);
+#else
     (void) signal(SIGILL, Exit);
     (void) signal(SIGTRAP, Exit);
     (void) signal(SIGBUS, Exit);
@@ -121,6 +140,7 @@ main(argc, argv)
     (void) signal(SIGHUP, SIG_IGN);
     (void) signal(SIGINT, SIG_IGN);
     (void) signal(SIGQUIT, SIG_IGN);
+#endif POSIX_SIGNALS
 
     setbuf(stderr, NULL);