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

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