summaryrefslogtreecommitdiff
path: root/extra/gdm/maintain-FamilyLocal-cookie.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/gdm/maintain-FamilyLocal-cookie.patch')
-rw-r--r--extra/gdm/maintain-FamilyLocal-cookie.patch124
1 files changed, 0 insertions, 124 deletions
diff --git a/extra/gdm/maintain-FamilyLocal-cookie.patch b/extra/gdm/maintain-FamilyLocal-cookie.patch
deleted file mode 100644
index 446c88860..000000000
--- a/extra/gdm/maintain-FamilyLocal-cookie.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From 6bc39aa208dbd8105232ae62255c42fafdec0541 Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Thu, 20 Dec 2012 16:07:09 +0000
-Subject: display-access-file: maintain FamilyLocal entry for backward compatibility
-
-commit 0fccf4e0671e49f6e57d0135c97344973c042b23 swapped out the
-FamilyLocal auth cookie for a FamilyWild auth cookie, because the
-latter is more resilient to hostname changes. Unfortunately,
-not all of the tooling accepts FamilyWild cookies (in particular the
-xauth command), so things like su broke.
-
-This commit changes the code to have a FamilyWild and FamilyLocal
-cookie.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=690562
----
-diff --git a/daemon/gdm-display-access-file.c b/daemon/gdm-display-access-file.c
-index 02bd414..02ec0a0 100644
---- a/daemon/gdm-display-access-file.c
-+++ b/daemon/gdm-display-access-file.c
-@@ -438,8 +438,18 @@ _get_auth_info_for_display (GdmDisplayAccessFile *file,
- gdm_display_is_local (display, &is_local, NULL);
-
- if (is_local) {
-- *family = FamilyWild;
-- *address = g_strdup ("localhost");
-+ /* We could just use FamilyWild here except xauth
-+ * (and by extension su and ssh) doesn't support it yet
-+ *
-+ * https://bugs.freedesktop.org/show_bug.cgi?id=43425
-+ */
-+ char localhost[HOST_NAME_MAX + 1] = "";
-+ *family = FamilyLocal;
-+ if (gethostname (localhost, HOST_NAME_MAX) == 0) {
-+ *address = g_strdup (localhost);
-+ } else {
-+ *address = g_strdup ("localhost");
-+ }
- } else {
- *family = FamilyWild;
- gdm_display_get_remote_hostname (display, address, NULL);
-@@ -533,6 +543,18 @@ gdm_display_access_file_add_display_with_cookie (GdmDisplayAccessFile *file,
- display_added = TRUE;
- }
-
-+ /* If we wrote a FamilyLocal entry, we still want a FamilyWild
-+ * entry, because it's more resiliant against hostname changes
-+ *
-+ */
-+ if (auth_entry.family == FamilyLocal) {
-+ auth_entry.family = FamilyWild;
-+
-+ if (XauWriteAuth (file->priv->fp, &auth_entry)
-+ && fflush (file->priv->fp) != EOF) {
-+ display_added = TRUE;
-+ }
-+ }
-
- g_free (auth_entry.address);
- g_free (auth_entry.number);
-@@ -555,6 +577,7 @@ gdm_display_access_file_remove_display (GdmDisplayAccessFile *file,
- unsigned short name_length;
- char *name;
-
-+ gboolean result = FALSE;
-
- g_return_val_if_fail (file != NULL, FALSE);
- g_return_val_if_fail (file->priv->path != NULL, FALSE);
-@@ -579,25 +602,44 @@ gdm_display_access_file_remove_display (GdmDisplayAccessFile *file,
- g_free (number);
- g_free (name);
-
-- if (auth_entry == NULL) {
-+ if (auth_entry != NULL) {
-+ XauDisposeAuth (auth_entry);
-+ result = TRUE;
-+ }
-+
-+ /* If FamilyLocal, we also added a FamilyWild entry,
-+ * so we need to clean that up too
-+ */
-+ if (family == FamilyLocal) {
-+ auth_entry = XauGetAuthByAddr (FamilyWild,
-+ address_length,
-+ address,
-+ number_length,
-+ number,
-+ name_length,
-+ name);
-+
-+ if (auth_entry != NULL) {
-+ XauDisposeAuth (auth_entry);
-+ result = TRUE;
-+ }
-+ }
-+
-+
-+ if (result == FALSE) {
- g_set_error (error,
- GDM_DISPLAY_ACCESS_FILE_ERROR,
- GDM_DISPLAY_ACCESS_FILE_ERROR_FINDING_AUTH_ENTRY,
- "could not find authorization entry");
-- return FALSE;
-- }
--
-- XauDisposeAuth (auth_entry);
--
-- if (fflush (file->priv->fp) == EOF) {
-+ } else if (fflush (file->priv->fp) == EOF) {
- g_set_error (error,
- G_FILE_ERROR,
- g_file_error_from_errno (errno),
- "%s", g_strerror (errno));
-- return FALSE;
-+ result = FALSE;
- }
-
-- return TRUE;
-+ return result;
- }
-
- void
---
-cgit v0.9.0.2