summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2012-10-01 17:51:47 -0400
committerRay Strode <rstrode@redhat.com>2012-10-01 17:51:47 -0400
commit01c334ed94b64a3b2e9119e95e968db24dac5a31 (patch)
tree8b96fabf24daabf275b38eab04b8ecca84cd3e07
parent0fbe5f38740cb59d542241dae3457d6c0dcf2880 (diff)
downloadgdm-01c334ed94b64a3b2e9119e95e968db24dac5a31.tar.gz
worker: create program session log file as root
The log file goes to a root owned directory so should be opened by root.
-rw-r--r--daemon/gdm-session-worker.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index 3f250f99..1dfeee3e 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -1780,6 +1780,14 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
char *home_dir;
int fd;
+ fd = open ("/dev/null", O_RDWR);
+ dup2 (fd, STDIN_FILENO);
+ close (fd);
+
+ if (worker->priv->is_program_session) {
+ fd = _open_program_session_log (worker->priv->log_file);
+ }
+
if (setuid (worker->priv->uid) < 0) {
g_debug ("GdmSessionWorker: could not reset uid: %s", g_strerror (errno));
_exit (1);
@@ -1791,7 +1799,6 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
_exit (2);
}
-
kerberos_cache = gdm_session_worker_get_environment_variable (worker, "KRB5CCNAME");
if (kerberos_cache == NULL) {
@@ -1823,13 +1830,7 @@ gdm_session_worker_start_session (GdmSessionWorker *worker,
g_chdir ("/");
}
- fd = open ("/dev/null", O_RDWR);
- dup2 (fd, STDIN_FILENO);
- close (fd);
-
- if (worker->priv->is_program_session) {
- fd = _open_program_session_log (worker->priv->log_file);
- } else {
+ if (!worker->priv->is_program_session) {
if (home_dir != NULL && home_dir[0] != '\0') {
char *cache_dir;
char *log_dir;