summaryrefslogtreecommitdiff
path: root/daemon/gdm-session-worker.c
diff options
context:
space:
mode:
authorColomban Wendling <ban@herbesfolles.org>2014-09-01 01:21:04 +0200
committerRay Strode <rstrode@redhat.com>2014-09-02 15:11:12 -0400
commitabaa3e6cd96ca80560848f17a6a314c8405735d6 (patch)
treed23f5e345378bdedc3dbaa9f5857cd387abf0b82 /daemon/gdm-session-worker.c
parentdb94ed31b79c90528d922d705ff3484216817415 (diff)
downloadgdm-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.c8
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 **)