diff options
author | Colomban Wendling <ban@herbesfolles.org> | 2014-09-01 01:21:04 +0200 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2014-09-02 15:11:12 -0400 |
commit | abaa3e6cd96ca80560848f17a6a314c8405735d6 (patch) | |
tree | d23f5e345378bdedc3dbaa9f5857cd387abf0b82 /daemon/gdm-session-worker.c | |
parent | db94ed31b79c90528d922d705ff3484216817415 (diff) | |
download | gdm-abaa3e6cd96ca80560848f17a6a314c8405735d6.tar.gz |
worker: really don't block SIGUSR1
The manager process alters the signal mask, so we need to reset it to
the expected default value when launching the session as the signal
mask is inherited from the parent.
https://bugzilla.gnome.org/show_bug.cgi?id=731228
Diffstat (limited to 'daemon/gdm-session-worker.c')
-rw-r--r-- | daemon/gdm-session-worker.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c index bc50b37f..89505c2f 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -1836,6 +1836,7 @@ gdm_session_worker_start_session (GdmSessionWorker *worker, char *home_dir; int stdin_fd = -1, stdout_fd = -1, stderr_fd = -1; gboolean has_journald = FALSE; + sigset_t mask; /* Leak the TTY into the session as stdin so that it stays open * without any races. */ @@ -1950,6 +1951,13 @@ gdm_session_worker_start_session (GdmSessionWorker *worker, */ signal (SIGUSR1, SIG_DFL); + /* + * Reset signal mask to default since it was altered by the + * manager process + */ + sigemptyset (&mask); + sigprocmask (SIG_SETMASK, &mask, NULL); + gdm_session_execute (worker->priv->arguments[0], worker->priv->arguments, (char **) |