Blame SOURCES/0002-session-Don-t-leak-remote-greeter-interface.patch

0d0cc6
From aeb88313c2110389ec530c8c7d5d816bac24d254 Mon Sep 17 00:00:00 2001
0d0cc6
From: Ray Strode <rstrode@redhat.com>
0d0cc6
Date: Tue, 15 Sep 2020 00:41:00 -0400
0d0cc6
Subject: [PATCH 2/3] session: Don't leak remote greeter interface
0d0cc6
0d0cc6
XDMCP login screens get a "Remote Geeter Interface" exported over
0d0cc6
the bus connection (so the login window can provide a Disconnect
0d0cc6
button).
0d0cc6
0d0cc6
This interface is getting leaked when the session object is disposed,
0d0cc6
leaving the bus connection itself undisposed, which causes an fd
0d0cc6
leak.
0d0cc6
0d0cc6
This commit plugs the interface leak, and thus the fd leak.
0d0cc6
---
0d0cc6
 daemon/gdm-session.c | 1 +
0d0cc6
 1 file changed, 1 insertion(+)
0d0cc6
0d0cc6
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
0d0cc6
index 540a2534d..d6d8f128a 100644
0d0cc6
--- a/daemon/gdm-session.c
0d0cc6
+++ b/daemon/gdm-session.c
0d0cc6
@@ -3602,60 +3602,61 @@ gdm_session_get_property (GObject    *object,
0d0cc6
                 break;
0d0cc6
 #ifdef ENABLE_WAYLAND_SUPPORT
0d0cc6
         case PROP_IGNORE_WAYLAND:
0d0cc6
                 g_value_set_boolean (value, self->priv->ignore_wayland);
0d0cc6
                 break;
0d0cc6
 #endif
0d0cc6
         default:
0d0cc6
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
0d0cc6
                 break;
0d0cc6
         }
0d0cc6
 }
0d0cc6
 
0d0cc6
 static void
0d0cc6
 gdm_session_dispose (GObject *object)
0d0cc6
 {
0d0cc6
         GdmSession *self;
0d0cc6
 
0d0cc6
         self = GDM_SESSION (object);
0d0cc6
 
0d0cc6
         g_debug ("GdmSession: Disposing session");
0d0cc6
 
0d0cc6
         gdm_session_close (self);
0d0cc6
 
0d0cc6
         g_clear_pointer (&self->priv->conversations,
0d0cc6
                          g_hash_table_unref);
0d0cc6
 
0d0cc6
         g_clear_object (&self->priv->user_verifier_interface);
0d0cc6
         g_clear_pointer (&self->priv->user_verifier_extensions,
0d0cc6
                          g_hash_table_unref);
0d0cc6
         g_clear_object (&self->priv->greeter_interface);
0d0cc6
+        g_clear_object (&self->priv->remote_greeter_interface);
0d0cc6
         g_clear_object (&self->priv->chooser_interface);
0d0cc6
 
0d0cc6
         g_free (self->priv->display_name);
0d0cc6
         self->priv->display_name = NULL;
0d0cc6
 
0d0cc6
         g_free (self->priv->display_hostname);
0d0cc6
         self->priv->display_hostname = NULL;
0d0cc6
 
0d0cc6
         g_free (self->priv->display_device);
0d0cc6
         self->priv->display_device = NULL;
0d0cc6
 
0d0cc6
         g_free (self->priv->display_seat_id);
0d0cc6
         self->priv->display_seat_id = NULL;
0d0cc6
 
0d0cc6
         g_free (self->priv->display_x11_authority_file);
0d0cc6
         self->priv->display_x11_authority_file = NULL;
0d0cc6
 
0d0cc6
         g_strfreev (self->priv->conversation_environment);
0d0cc6
         self->priv->conversation_environment = NULL;
0d0cc6
 
0d0cc6
         if (self->priv->worker_server != NULL) {
0d0cc6
                 g_dbus_server_stop (self->priv->worker_server);
0d0cc6
                 g_clear_object (&self->priv->worker_server);
0d0cc6
         }
0d0cc6
 
0d0cc6
         if (self->priv->outside_server != NULL) {
0d0cc6
                 g_dbus_server_stop (self->priv->outside_server);
0d0cc6
                 g_clear_object (&self->priv->outside_server);
0d0cc6
         }
0d0cc6
 
0d0cc6
-- 
0d0cc6
2.26.2
0d0cc6