File gdm-xauthlocalhostname.patch of Package gdm

Index: gdm-3.7.3.1/daemon/gdm-display-access-file.c
===================================================================
--- gdm-3.7.3.1.orig/daemon/gdm-display-access-file.c
+++ gdm-3.7.3.1/daemon/gdm-display-access-file.c
@@ -443,13 +443,10 @@ _get_auth_info_for_display (GdmDisplayAc
                  *
                  * 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");
-                }
+               /* using the new function we create in the patch, to detect
+		* changes here, in the original code */
+		*address = gdm_gethostname ();
         } else {
                 *family = FamilyWild;
                 gdm_display_get_remote_hostname (display, address, NULL);
Index: gdm-3.7.3.1/daemon/gdm-launch-environment.c
===================================================================
--- gdm-3.7.3.1.orig/daemon/gdm-launch-environment.c
+++ gdm-3.7.3.1/daemon/gdm-launch-environment.c
@@ -284,6 +284,11 @@ build_launch_environment (GdmLaunchEnvir
                 g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
         }
 
+        if (launch_environment->priv->x11_display_is_local) {
+                g_hash_table_remove (hash, "XAUTHLOCALHOSTNAME");
+                g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), gdm_gethostname ());
+        }
+
         g_hash_table_insert (hash, g_strdup ("PATH"), g_strdup (g_getenv ("PATH")));
 
         g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));
Index: gdm-3.7.3.1/daemon/gdm-session.c
===================================================================
--- gdm-3.7.3.1.orig/daemon/gdm-session.c
+++ gdm-3.7.3.1/daemon/gdm-session.c
@@ -2374,6 +2374,14 @@ setup_session_environment (GdmSession *s
                                                       self->priv->user_x11_authority_file);
         }
 
+        if (self->priv->display_is_local) {
+                char *hostname = gdm_gethostname ();
+                gdm_session_set_environment_variable (self,
+                                                      "XAUTHLOCALHOSTNAME",
+                                                      hostname);
+                g_free (hostname);
+        }
+
         if (g_getenv ("WINDOWPATH") != NULL) {
                 gdm_session_set_environment_variable (self,
                                                       "WINDOWPATH",
Index: gdm-3.7.3.1/daemon/gdm-slave.c
===================================================================
--- gdm-3.7.3.1.orig/daemon/gdm-slave.c
+++ gdm-3.7.3.1/daemon/gdm-slave.c
@@ -255,6 +255,10 @@ get_script_environment (GdmSlave   *slav
                 g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (slave->priv->display_hostname));
         }
 
+        if (slave->priv->display_is_local) {
+                g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), gdm_gethostname ());
+        }
+
         /* Runs as root */
         g_hash_table_insert (hash, g_strdup ("XAUTHORITY"), g_strdup (slave->priv->display_x11_authority_file));
         g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (slave->priv->display_name));
@@ -644,6 +648,11 @@ gdm_slave_connect_to_x11_display (GdmSla
 
         g_setenv ("DISPLAY", slave->priv->display_name, TRUE);
         g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE);
+        do {
+                char *hostname = gdm_gethostname ();
+                g_setenv ("XAUTHLOCALHOSTNAME", hostname, TRUE);
+                g_free (hostname);
+        } while (0);
 
         sigemptyset (&mask);
         sigaddset (&mask, SIGCHLD);
Index: gdm-3.7.3.1/common/gdm-common.c
===================================================================
--- gdm-3.7.3.1.orig/common/gdm-common.c
+++ gdm-3.7.3.1/common/gdm-common.c
@@ -509,3 +509,14 @@ gdm_generate_random_bytes (gsize    size
         close (fd);
         return bytes;
 }
+
+char *
+gdm_gethostname (void)
+{
+        char localhost[HOST_NAME_MAX + 1] = "";
+        if (gethostname (localhost, HOST_NAME_MAX) == 0) {
+                return g_strdup (localhost);
+        } else {
+                return g_strdup ("localhost");
+        }
+}
Index: gdm-3.7.3.1/common/gdm-common.h
===================================================================
--- gdm-3.7.3.1.orig/common/gdm-common.h
+++ gdm-3.7.3.1/common/gdm-common.h
@@ -58,6 +58,7 @@ gboolean       gdm_string_hex_decode
                                           int            insert_at);
 char          *gdm_generate_random_bytes (gsize          size,
                                           GError       **error);
+char          *gdm_gethostname           (void);
 
 G_END_DECLS