From 22d44cbb58c090683622a257719ff704b4a59f6b Mon Sep 17 00:00:00 2001 From: Matheus Date: Mon, 2 Sep 2024 19:43:54 -0300 Subject: [PATCH] init: unblock signals before execing into child --- tools/init/main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/init/main.c b/tools/init/main.c index 7c48db08..265df002 100644 --- a/tools/init/main.c +++ b/tools/init/main.c @@ -12,6 +12,12 @@ #include "common.h" +static void unblocksignals(void) { + sigset_t signals; + sigfillset(&signals); + sigprocmask(SIG_UNBLOCK, &signals, NULL); +} + static void sendacpicommand(char c) { int acpifd = open("/dev/acpi", O_WRONLY); if (acpifd == -1) { @@ -161,6 +167,8 @@ static void dorootshell(void) { exit(EXIT_FAILURE); } + unblocksignals(); + execl("/usr/bin/bash", "/usr/bin/bash", "-l", NULL); perror("init: execl /usr/bin/bash failed"); return exit(EXIT_FAILURE); @@ -179,6 +187,7 @@ static void dologinprompt(void) { if (pid == 0) { setsid(); snatchconsole(); + unblocksignals(); execl("/bin/login", NULL); perror("init: exec /bin/login failed"); exit(EXIT_FAILURE); @@ -195,7 +204,7 @@ static void dostartwm(void) { } if (pid == 0) { - + unblocksignals(); execl("/usr/bin/startwm", NULL); perror("init: exec /usr/bin/startwm failed"); exit(EXIT_FAILURE);