From 8c43883a682b2edd902b170ab2e0f3d50d7e92e0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 13 Apr 2010 04:07:19 +0200 Subject: [PATCH] main: try to block signals before executing crash shell --- main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/main.c b/main.c index 3e2bfe10..6a3eee2e 100644 --- a/main.c +++ b/main.c @@ -110,9 +110,17 @@ _noreturn static void crash(int sig) { chvt(crash_chvt); if (crash_shell) { + sigset_t mask; + log_info("Executing crash shell in 10s..."); sleep(10); + /* Make sure the signal is not delivered inside the + * exec() */ + assert_se(sigemptyset(&mask) == 0); + assert_se(sigaddset(&mask, sig) == 0); + assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0); + execl("/bin/sh", "/bin/sh", NULL); log_error("execl() failed: %s", strerror(errno)); } -- 2.39.5