SHA256
1
0
forked from pool/gdm
Files
gdm/gdm-xauthlocalhostname.patch
Dominique Leuenberger 7cb19a7690 - Update to version 49.0.1:
+ Follow-up for permissions issue fix, making the fix work in
    more environments

- Update to version 49.0:
  + Fix build failures when built without plymouth support
  + Fix permissions issue on the GDM work dir (/var/lib/gdm) that
    broke settings persistence
  + Updated translations

- Update to version 49.rc:
  + Fixed a bug in PAM config files, introduced by transition to
    dynamic users
  + Added logic to retry preferred display server (usually Wayland)
    before falling back (usually to X11)
  + Fixed a bug where Plymouth keeps running if no display is
    plugged into the system. This would prevent bootup from
    completing and would prevent the user from logging in on a
    serial console
  + Fixed GDM's session file loading logic to search directories in
    correct precedence order
  + Fix simpledrm device detection to match the kernel's new device
    naming scheme
  + Re-enabled X11 support by default. We found it difficult to
    cleanly separate GDM's ability to launch modern X11 sessions
    (which we intended to keep enabled in GNOME 49) from the rest
    of GDM's X11 integration (which we intended to disable but
    leave intact for GNOME 49). We still plan to remove GDM's full
    X11 integration in a future version, and leave only the ability
    to launch modern X11 sessions.

OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gdm?expand=0&rev=600
2025-09-17 15:55:07 +00:00

97 lines
4.0 KiB
Diff

Index: gdm-49.rc/common/gdm-common.c
===================================================================
--- gdm-49.rc.orig/common/gdm-common.c
+++ gdm-49.rc/common/gdm-common.c
@@ -691,6 +691,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 */
@@ -1156,3 +1158,14 @@ gdm_load_env_d (GdmLoadEnvVarFunc load_e
gdm_load_env_dir (dir, load_env_func, expand_func, user_data);
g_object_unref (dir);
}
+
+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-49.rc/common/gdm-common.h
===================================================================
--- gdm-49.rc.orig/common/gdm-common.h
+++ gdm-49.rc/common/gdm-common.h
@@ -77,6 +77,7 @@ char *gdm_generate_random_bytes
gboolean gdm_get_login_window_session_id (const char *seat_id,
char **session_id);
+char *gdm_gethostname (void);
gboolean gdm_goto_login_session (GCancellable *cancellable,
GError **error);
Index: gdm-49.rc/daemon/gdm-display-access-file.c
===================================================================
--- gdm-49.rc.orig/daemon/gdm-display-access-file.c
+++ gdm-49.rc/daemon/gdm-display-access-file.c
@@ -432,13 +432,10 @@ _get_auth_info_for_display (GdmDisplayAc
*
* https://bugs.freedesktop.org/show_bug.cgi?id=43425
*/
- char localhost[_POSIX_HOST_NAME_MAX + 1] = "";
*family = FamilyLocal;
- if (gethostname (localhost, _POSIX_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-49.rc/daemon/gdm-launch-environment.c
===================================================================
--- gdm-49.rc.orig/daemon/gdm-launch-environment.c
+++ gdm-49.rc/daemon/gdm-launch-environment.c
@@ -325,6 +325,11 @@ build_launch_environment (GdmLaunchEnvir
}
}
+ if (launch_environment->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"));
/* Now populate XDG_DATA_DIRS from env.d if we're running initial setup; this allows
Index: gdm-49.rc/daemon/gdm-session.c
===================================================================
--- gdm-49.rc.orig/daemon/gdm-session.c
+++ gdm-49.rc/daemon/gdm-session.c
@@ -2955,6 +2955,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",