aboutsummaryrefslogtreecommitdiff
path: root/x11/gdm
diff options
context:
space:
mode:
authorKoop Mast <kwm@FreeBSD.org>2011-03-29 13:40:09 +0000
committerKoop Mast <kwm@FreeBSD.org>2011-03-29 13:40:09 +0000
commitace6f3f56e97e514434121305455733e3227fb42 (patch)
tree090b1a28ee2a803a18260afc6b36930293643bbc /x11/gdm
parent25852b8521bc24d4ca77c20e45561b85e28653d7 (diff)
downloadports-ace6f3f56e97e514434121305455733e3227fb42.tar.gz
ports-ace6f3f56e97e514434121305455733e3227fb42.zip
Notes
Diffstat (limited to 'x11/gdm')
-rw-r--r--x11/gdm/Makefile2
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session-worker.c53
2 files changed, 49 insertions, 6 deletions
diff --git a/x11/gdm/Makefile b/x11/gdm/Makefile
index 69a41b9c4bcd..c5659afefbb1 100644
--- a/x11/gdm/Makefile
+++ b/x11/gdm/Makefile
@@ -8,7 +8,7 @@
PORTNAME= gdm
PORTVERSION= 2.30.5
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
diff --git a/x11/gdm/files/patch-daemon_gdm-session-worker.c b/x11/gdm/files/patch-daemon_gdm-session-worker.c
index 362a116eaa79..fc29affddab0 100644
--- a/x11/gdm/files/patch-daemon_gdm-session-worker.c
+++ b/x11/gdm/files/patch-daemon_gdm-session-worker.c
@@ -1,5 +1,5 @@
---- daemon/gdm-session-worker.c.orig 2009-09-21 22:05:27.000000000 +0200
-+++ daemon/gdm-session-worker.c 2009-09-22 12:33:59.000000000 +0200
+--- daemon/gdm-session-worker.c.orig 2010-08-11 19:40:07.000000000 +0200
++++ daemon/gdm-session-worker.c 2011-03-29 10:37:37.000000000 +0200
@@ -31,6 +31,9 @@
#include <errno.h>
#include <grp.h>
@@ -10,7 +10,7 @@
#ifdef HAVE_LOGINDEVPERM
#include <libdevinfo.h>
-@@ -340,7 +343,7 @@ gdm_session_execute (const char *file,
+@@ -341,7 +344,7 @@ gdm_session_execute (const char *file,
* what to search if PATH is unset. POSIX may, dunno.
*/
@@ -19,7 +19,50 @@
}
len = strlen (file) + 1;
-@@ -1995,15 +1998,16 @@ gdm_session_worker_start_user_session (G
+@@ -1035,17 +1038,6 @@ gdm_cache_copy_file (GdmSessionWorker *w
+ error->message);
+ g_error_free (error);
+ } else {
+- int res;
+-
+- res = chown (cachefilename,
+- worker->priv->uid,
+- worker->priv->gid);
+- if (res == -1) {
+- g_warning ("GdmSessionWorker: Error setting owner of cache file: %s",
+- g_strerror (errno));
+- }
+-
+- g_chmod (cachefilename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+ g_debug ("Copy successful");
+ }
+
+@@ -1183,7 +1175,23 @@ gdm_session_worker_uninitialize_pam (Gdm
+ return;
+
+ if (worker->priv->state >= GDM_SESSION_WORKER_STATE_SESSION_OPENED) {
+- gdm_session_worker_cache_userfiles (worker);
++ pid_t pid;
++
++ pid = fork ();
++
++ if (pid == 0) {
++ if (setuid (worker->priv->uid) < 0) {
++ g_debug ("GdmSessionWorker: could not reset uid: %s", g_strerror (errno));
++ _exit (1);
++ }
++
++ gdm_session_worker_cache_userfiles (worker);
++ _exit (0);
++ }
++
++ if (pid > 0) {
++ gdm_wait_on_pid (pid);
++ }
+ pam_close_session (worker->priv->pam_handle, 0);
+ gdm_session_auditor_report_logout (worker->priv->auditor);
+
+@@ -2027,15 +2035,16 @@ gdm_session_worker_start_user_session (G
char *cachedirname;
char *home_dir;
int fd;
@@ -40,7 +83,7 @@
if (setsid () < 0) {
g_debug ("GdmSessionWorker: could not set pid '%u' as leader of new session and process group - %s",
-@@ -2011,6 +2015,28 @@ gdm_session_worker_start_user_session (G
+@@ -2043,6 +2052,28 @@ gdm_session_worker_start_user_session (G
_exit (2);
}