From 33999c83bc20673aa092f83ad818b72f56f57b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Torres=20L=C3=B3pez?= Date: Thu, 19 Jun 2025 13:08:33 +0200 Subject: [PATCH] Fix leak on new connections Resolves: RHEL-5703 --- ...emory-leak-on-new-outside-connection.patch | 96 +++++++++++++++++++ gdm.spec | 4 + 2 files changed, 100 insertions(+) create mode 100644 0001-session-Fix-memory-leak-on-new-outside-connection.patch diff --git a/0001-session-Fix-memory-leak-on-new-outside-connection.patch b/0001-session-Fix-memory-leak-on-new-outside-connection.patch new file mode 100644 index 0000000..f62151f --- /dev/null +++ b/0001-session-Fix-memory-leak-on-new-outside-connection.patch @@ -0,0 +1,96 @@ +From 3d67dc8e992b69c331b403b5ff7f680700392977 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Joan=20Torres=20L=C3=B3pez?= +Date: Wed, 11 Jun 2025 17:54:52 +0200 +Subject: [PATCH] session: Fix memory leak on new outside connection + +On a new outside connection some new dbus interfaces are created and +assigned as properties to session. However the assignation wasn't +considering the previous reference of these interfaces, leading to a +memory leak. + +Use g_set_object to fix it. +--- + daemon/gdm-session.c | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) + +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index 33dee7606..08ba39cf6 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -1840,7 +1840,8 @@ static void + export_user_verifier_interface (GdmSession *self, + GDBusConnection *connection) + { +- GdmDBusUserVerifier *user_verifier_interface; ++ g_autoptr (GdmDBusUserVerifier) user_verifier_interface = NULL; ++ + user_verifier_interface = GDM_DBUS_USER_VERIFIER (gdm_dbus_user_verifier_skeleton_new ()); + + g_object_set_data (G_OBJECT (connection), "gdm-session", self); +@@ -1871,14 +1872,14 @@ export_user_verifier_interface (GdmSession *self, + GDM_SESSION_DBUS_OBJECT_PATH, + NULL); + +- self->user_verifier_interface = user_verifier_interface; ++ g_set_object (&self->user_verifier_interface, user_verifier_interface); + } + + static void + export_greeter_interface (GdmSession *self, + GDBusConnection *connection) + { +- GdmDBusGreeter *greeter_interface; ++ g_autoptr (GdmDBusGreeter) greeter_interface = NULL; + + greeter_interface = GDM_DBUS_GREETER (gdm_dbus_greeter_skeleton_new ()); + +@@ -1912,8 +1913,7 @@ export_greeter_interface (GdmSession *self, + GDM_SESSION_DBUS_OBJECT_PATH, + NULL); + +- self->greeter_interface = greeter_interface; +- ++ g_set_object (&self->greeter_interface, greeter_interface); + } + + static gboolean +@@ -1931,7 +1931,7 @@ static void + export_remote_greeter_interface (GdmSession *self, + GDBusConnection *connection) + { +- GdmDBusRemoteGreeter *remote_greeter_interface; ++ g_autoptr (GdmDBusRemoteGreeter) remote_greeter_interface = NULL; + + remote_greeter_interface = GDM_DBUS_REMOTE_GREETER (gdm_dbus_remote_greeter_skeleton_new ()); + +@@ -1945,8 +1945,7 @@ export_remote_greeter_interface (GdmSession *self, + GDM_SESSION_DBUS_OBJECT_PATH, + NULL); + +- self->remote_greeter_interface = remote_greeter_interface; +- ++ g_set_object (&self->remote_greeter_interface, remote_greeter_interface); + } + + static gboolean +@@ -1966,7 +1965,7 @@ static void + export_chooser_interface (GdmSession *self, + GDBusConnection *connection) + { +- GdmDBusChooser *chooser_interface; ++ g_autoptr (GdmDBusChooser) chooser_interface = NULL; + + chooser_interface = GDM_DBUS_CHOOSER (gdm_dbus_chooser_skeleton_new ()); + +@@ -1980,7 +1979,7 @@ export_chooser_interface (GdmSession *self, + GDM_SESSION_DBUS_OBJECT_PATH, + NULL); + +- self->chooser_interface = chooser_interface; ++ g_set_object (&self->chooser_interface, chooser_interface); + } + + static void +-- +2.49.0 + diff --git a/gdm.spec b/gdm.spec index f197a87..303a8ba 100644 --- a/gdm.spec +++ b/gdm.spec @@ -34,6 +34,10 @@ Patch: 0001-schema-Add-banner-message-path-and-source-settings.patch # https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/284 Patch: 0001-meson-Define-missing-HAVE_LIBAUDIT.patch +# RHEL-5703 +# https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/298 +Patch: 0001-session-Fix-memory-leak-on-new-outside-connection.patch + BuildRequires: dconf BuildRequires: desktop-file-utils BuildRequires: gettext-devel