summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session.c67
1 files changed, 57 insertions, 10 deletions
diff --git a/x11/gdm/files/patch-daemon_gdm-session.c b/x11/gdm/files/patch-daemon_gdm-session.c
index fedc0d93f..7754a34fc 100644
--- a/x11/gdm/files/patch-daemon_gdm-session.c
+++ b/x11/gdm/files/patch-daemon_gdm-session.c
@@ -1,11 +1,58 @@
---- daemon/gdm-session.orig.c 2013-08-28 16:29:01.973683917 +0000
-+++ daemon/gdm-session.c 2013-08-28 16:29:10.164681622 +0000
-@@ -980,7 +980,7 @@
- native_credentials = g_credentials_get_native (credentials, G_CREDENTIALS_TYPE_LINUX_UCRED);
- pid = (GPid) ((struct ucred *) native_credentials)->pid;
- #elif defined (__FreeBSD__)
+--- daemon/gdm-session.c
++++ daemon/gdm-session.c
+@@ -970,28 +970,6 @@ allow_worker_function (GDBusAuthObserver *observer,
+ return FALSE;
+ }
+
+-static GPid
+-credentials_get_unix_pid (GCredentials *credentials)
+-{
+- GPid pid = 0;
+- gpointer native_credentials = NULL;
+-
+-#ifdef __linux__
+- native_credentials = g_credentials_get_native (credentials, G_CREDENTIALS_TYPE_LINUX_UCRED);
+- pid = (GPid) ((struct ucred *) native_credentials)->pid;
+-#elif defined (__FreeBSD__)
- native_credentials = g_credentials_get_native (credentials, G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED);
-+ native_credentials = g_credentials_get_native (credentials, G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED);
- pid = (GPid) ((struct cmsgcred *) native_credentials)->cmcred_pid;
- #elif defined (__OpenBSD__)
- native_credentials = g_credentials_get_native (credentials, G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED);
+- pid = (GPid) ((struct cmsgcred *) native_credentials)->cmcred_pid;
+-#elif defined (__OpenBSD__)
+- native_credentials = g_credentials_get_native (credentials, G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED);
+- pid = (GPid) ((struct sockpeercred *) native_credentials)->pid;
+-#else
+-#error "platform not supported, need mechanism to detect pid of connected process"
+-#endif
+-
+- return pid;
+-}
+-
+ static gboolean
+ register_worker (GdmDBusWorkerManager *worker_manager_interface,
+ GDBusMethodInvocation *invocation,
+@@ -1021,7 +999,7 @@ register_worker (GdmDBusWorkerManager *worker_manager_interface,
+ connection_node);
+
+ credentials = g_dbus_connection_get_peer_credentials (connection);
+- pid = credentials_get_unix_pid (credentials);
++ pid = g_credentials_get_unix_pid (credentials, NULL);
+
+ conversation = find_conversation_by_pid (self, (GPid) pid);
+
+@@ -1479,7 +1457,7 @@ on_outside_connection_closed (GDBusConnection *connection,
+ connection);
+
+ credentials = g_dbus_connection_get_peer_credentials (connection);
+- pid_of_client = credentials_get_unix_pid (credentials);
++ pid_of_client = g_credentials_get_unix_pid (credentials, NULL);
+
+ g_signal_emit (G_OBJECT (self),
+ signals [CLIENT_DISCONNECTED],
+@@ -1531,7 +1509,7 @@ handle_connection_from_outside (GDBusServer *server,
+ }
+
+ credentials = g_dbus_connection_get_peer_credentials (connection);
+- pid_of_client = credentials_get_unix_pid (credentials);
++ pid_of_client = g_credentials_get_unix_pid (credentials, NULL);
+
+ g_signal_emit (G_OBJECT (self),
+ signals [CLIENT_CONNECTED],