From 0254f3371039e6fa02bde373d08666c1a5272efb Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 22 Jan 2016 15:59:00 -0500 Subject: session: keep session object alive while establishing credentials The only reference to session objects gets cleaned up when verification-complete is emitted, which happens in the middle of the establish_credentials handler. This commit makes sure the session object stays alive until the handler completes to prevent a crash. https://bugzilla.gnome.org/show_bug.cgi?id=754814 --- daemon/gdm-session.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'daemon/gdm-session.c') diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c index 1df71c48..1d857d39 100644 --- a/daemon/gdm-session.c +++ b/daemon/gdm-session.c @@ -310,8 +310,8 @@ on_establish_credentials_cb (GdmDBusWorker *proxy, g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; - self = conversation->session; - service_name = conversation->service_name; + self = g_object_ref (conversation->session); + service_name = g_strdup (conversation->service_name); if (worked) { if (self->priv->user_verifier_interface != NULL) { @@ -332,6 +332,9 @@ on_establish_credentials_cb (GdmDBusWorker *proxy, } else { report_and_stop_conversation (self, service_name, error); } + + g_free (service_name); + g_object_unref (self); } static const char ** -- cgit v1.2.1