From c5c9571bec9047eeb1c33d3623f123e382f37589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 30 Jul 2013 09:45:04 -0700 Subject: [PATCH] weston-launch: Unblock our signalfd signals before execing child Giovanni Campagna ran into this with mutter. --- src/weston-launch.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/weston-launch.c b/src/weston-launch.c index ac786afa5..94a434c28 100644 --- a/src/weston-launch.c +++ b/src/weston-launch.c @@ -532,6 +532,7 @@ main(int argc, char *argv[]) char *tty = NULL, *new_user = NULL; char *term; int sleep_fork = 0; + sigset_t mask; struct option opts[] = { { "user", required_argument, NULL, 'u' }, { "tty", required_argument, NULL, 't' }, @@ -641,6 +642,12 @@ main(int argc, char *argv[]) setuid(wl.pw->pw_uid) < 0) error(1, errno, "dropping privileges failed"); + /* Do not give our signal mask to the new process. */ + sigemptyset(&mask); + sigaddset(&mask, SIGTERM); + sigaddset(&mask, SIGCHLD); + sigaddset(&mask, SIGINT); + sigprocmask(SIG_UNBLOCK, &mask, NULL); if (sleep_fork) { if (wl.verbose)