From 221daf2f5d9543db0821533deced34e23c80f53e Mon Sep 17 00:00:00 2001 From: Raphael Robatsch Date: Sat, 3 Dec 2022 19:12:30 +0100 Subject: [PATCH] use sigaction(2) instead of signal(2) To prevent crashes --- someblocks.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/someblocks.c b/someblocks.c index 8103164..f149896 100644 --- a/someblocks.c +++ b/someblocks.c @@ -95,15 +95,18 @@ void getsigcmds(unsigned int signal) void setupsignals() { + struct sigaction sa = {0}; #ifndef __OpenBSD__ - /* initialize all real time signals with dummy handler */ - for (int i = SIGRTMIN; i <= SIGRTMAX; i++) - signal(i, dummysighandler); + /* initialize all real time signals with dummy handler */ + sa.sa_handler = dummysighandler; + for (int i = SIGRTMIN; i <= SIGRTMAX; i++) + sigaction(i, &sa, NULL); #endif + sa.sa_handler = sighandler; for (unsigned int i = 0; i < LENGTH(blocks); i++) { if (blocks[i].signal > 0) - signal(SIGMINUS+blocks[i].signal, sighandler); + sigaction(SIGMINUS+blocks[i].signal, &sa, NULL); } }