aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxSlendiX <gamingxslendix@gmail.com>2021-09-08 01:38:30 +0300
committerxSlendiX <gamingxslendix@gmail.com>2021-09-08 01:38:30 +0300
commitaf258658c18603a231e1cd4c0b933beb2ab1fd22 (patch)
tree35d2166bfca4a6ab333da3bb6b9c92d04b29c725
parent7d2966b3f73cca5560b5aea1e47688190a22d8d3 (diff)
Add more signal handlers
-rw-r--r--sus.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/sus.c b/sus.c
index 5e5108f..8e65141 100644
--- a/sus.c
+++ b/sus.c
@@ -56,7 +56,23 @@ int main(int argc, char** argv)
return 0;
}
- signal(SIGINT, intHandler);
+ struct sigaction savealrm, saveint, savehup, savequit, saveterm;
+ struct sigaction savetstp, savettin, savettou, savepipe;
+
+ struct sigaction sa;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ sa.sa_handler = intHandler;
+
+ sigaction(SIGALRM, &sa, &savealrm);
+ sigaction(SIGHUP, &sa, &savehup);
+ sigaction(SIGINT, &sa, &saveint);
+ sigaction(SIGPIPE, &sa, &savepipe);
+ sigaction(SIGQUIT, &sa, &savequit);
+ sigaction(SIGTERM, &sa, &saveterm);
+ sigaction(SIGTSTP, &sa, &savetstp);
+ sigaction(SIGTTIN, &sa, &savettin);
+ sigaction(SIGTTOU, &sa, &savettou);
command_name = malloc((1 + strlen(argv[0])) * sizeof(char));
strcpy(command_name, argv[0]);
@@ -112,6 +128,16 @@ int main(int argc, char** argv)
return 1;
}
+ sigaction(SIGALRM, &sa, NULL);
+ sigaction(SIGHUP, &sa, NULL);
+ sigaction(SIGINT, &sa, NULL);
+ sigaction(SIGPIPE, &sa, NULL);
+ sigaction(SIGQUIT, &sa, NULL);
+ sigaction(SIGTERM, &sa, NULL);
+ sigaction(SIGTSTP, &sa, NULL);
+ sigaction(SIGTTIN, &sa, NULL);
+ sigaction(SIGTTOU, &sa, NULL);
+
argv += command_start;
setuid(uid);
char* path = getenv("PATH");