File gdm-xauthlocalhostname.patch of Package gdm.22242

diff -urp gdm-3.33.90.orig/common/gdm-common.c gdm-3.33.90/common/gdm-common.c
--- gdm-3.33.90.orig/common/gdm-common.c	2019-08-13 14:42:23.000000000 -0500
+++ gdm-3.33.90/common/gdm-common.c	2019-08-31 20:49:56.456485182 -0500
@@ -631,6 +631,8 @@ gdm_get_script_environment (const char *
 
         if (display_hostname) {
                 g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (display_hostname));
+        } else {
+                g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), gdm_gethostname ());
         }
 
         /* Runs as root */
@@ -952,3 +954,14 @@ gdm_find_display_session_for_uid (const
 
         return TRUE;
 }
+
+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");
+        }
+}
diff -urp gdm-3.33.90.orig/common/gdm-common.h gdm-3.33.90/common/gdm-common.h
--- gdm-3.33.90.orig/common/gdm-common.h	2019-08-13 14:42:23.000000000 -0500
+++ gdm-3.33.90/common/gdm-common.h	2019-08-31 20:49:56.460485202 -0500
@@ -65,6 +65,7 @@ char          *gdm_generate_random_bytes
 gboolean       gdm_get_login_window_session_id (const char  *seat_id,
                                                 char       **session_id);
 gboolean       gdm_goto_login_session    (GError **error);
+char          *gdm_gethostname           (void);
 
 GPtrArray     *gdm_get_script_environment (const char *username,
                                            const char *display_name,
diff -urp gdm-3.33.90.orig/daemon/gdm-display-access-file.c gdm-3.33.90/daemon/gdm-display-access-file.c
--- gdm-3.33.90.orig/daemon/gdm-display-access-file.c	2019-08-02 14:44:35.000000000 -0500
+++ gdm-3.33.90/daemon/gdm-display-access-file.c	2019-08-31 20:49:56.460485202 -0500
@@ -441,13 +441,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);
diff -urp gdm-3.33.90.orig/daemon/gdm-launch-environment.c gdm-3.33.90/daemon/gdm-launch-environment.c
--- gdm-3.33.90.orig/daemon/gdm-launch-environment.c	2019-08-13 20:37:16.000000000 -0500
+++ gdm-3.33.90/daemon/gdm-launch-environment.c	2019-08-31 20:49:56.460485202 -0500
@@ -216,6 +216,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 ("RUNNING_UNDER_GDM"), g_strdup ("true"));
 
         return hash;
diff -urp gdm-3.33.90.orig/daemon/gdm-session.c gdm-3.33.90/daemon/gdm-session.c
--- gdm-3.33.90.orig/daemon/gdm-session.c	2019-08-31 20:49:31.756354259 -0500
+++ gdm-3.33.90/daemon/gdm-session.c	2019-08-31 20:49:56.464485224 -0500
@@ -2683,6 +2683,14 @@ set_up_session_environment (GdmSession *
                 }
         }
 
+        if (self->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",
openSUSE Build Service is sponsored by