summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2015-02-27 12:31:12 -0500
committerRay Strode <rstrode@redhat.com>2015-02-27 12:32:14 -0500
commit12abebdee723a62e09b52f88c84d76bd6d3f6590 (patch)
tree45a1d3d7d22d21b2915199475fb906d08d555e4d
parent04c0d76f70719dc16b32efdb5c677255fe7467bf (diff)
downloadgdm-12abebdee723a62e09b52f88c84d76bd6d3f6590.tar.gz
worker: setuid after taking control of tty
This ensures we the session is always given the tty.
-rw-r--r--daemon/gdm-session-worker.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index 90c9245a..671a95a4 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -1912,19 +1912,6 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
stderr_fd = dup (stdout_fd);
}
-#ifdef HAVE_LOGINCAP
- if (setusercontext (NULL, passwd_entry, passwd_entry->pw_uid, LOGIN_SETALL) < 0) {
- g_debug ("GdmSessionWorker: setusercontext() failed for user %s: %s",
- passwd_entry->pw_name, g_strerror (errno));
- _exit (1);
- }
-#else
- if (setuid (worker->priv->uid) < 0) {
- g_debug ("GdmSessionWorker: could not reset uid: %s", g_strerror (errno));
- _exit (1);
- }
-#endif
-
if (setsid () < 0) {
g_debug ("GdmSessionWorker: could not set pid '%u' as leader of new session and process group: %s",
(guint) getpid (), g_strerror (errno));
@@ -1941,6 +1928,19 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
}
#endif
+#ifdef HAVE_LOGINCAP
+ if (setusercontext (NULL, passwd_entry, passwd_entry->pw_uid, LOGIN_SETALL) < 0) {
+ g_debug ("GdmSessionWorker: setusercontext() failed for user %s: %s",
+ passwd_entry->pw_name, g_strerror (errno));
+ _exit (1);
+ }
+#else
+ if (setuid (worker->priv->uid) < 0) {
+ g_debug ("GdmSessionWorker: could not reset uid: %s", g_strerror (errno));
+ _exit (1);
+ }
+#endif
+
environment = gdm_session_worker_get_environment (worker);
g_assert (geteuid () == getuid ());