Blame SOURCES/0003-session-worker-uninitialize-pam-if-worker-is-killed.patch

c4edd0
From db99c5181950f6f383b75e9956e170d3b2762d15 Mon Sep 17 00:00:00 2001
c4edd0
From: Ray Strode <rstrode@redhat.com>
c4edd0
Date: Mon, 24 Jun 2019 16:21:59 -0400
c4edd0
Subject: [PATCH 3/7] session-worker: uninitialize pam if worker is killed
c4edd0
c4edd0
Right nowe don't uninitialize pam or switch back to the
c4edd0
starting VT if the worker is killed before the session.
c4edd0
c4edd0
This commit fixes that.
c4edd0
---
c4edd0
 daemon/gdm-session-worker.c | 4 ++++
c4edd0
 1 file changed, 4 insertions(+)
c4edd0
c4edd0
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
c4edd0
index e526fa5db..f9bc82177 100644
c4edd0
--- a/daemon/gdm-session-worker.c
c4edd0
+++ b/daemon/gdm-session-worker.c
c4edd0
@@ -3534,60 +3534,64 @@ gdm_session_worker_init (GdmSessionWorker *worker)
c4edd0
 static void
c4edd0
 gdm_session_worker_unwatch_child (GdmSessionWorker *worker)
c4edd0
 {
c4edd0
         if (worker->priv->child_watch_id == 0)
c4edd0
                 return;
c4edd0
 
c4edd0
         g_source_remove (worker->priv->child_watch_id);
c4edd0
         worker->priv->child_watch_id = 0;
c4edd0
 }
c4edd0
 
c4edd0
 
c4edd0
 static void
c4edd0
 gdm_session_worker_finalize (GObject *object)
c4edd0
 {
c4edd0
         GdmSessionWorker *worker;
c4edd0
 
c4edd0
         g_return_if_fail (object != NULL);
c4edd0
         g_return_if_fail (GDM_IS_SESSION_WORKER (object));
c4edd0
 
c4edd0
         worker = GDM_SESSION_WORKER (object);
c4edd0
 
c4edd0
         g_return_if_fail (worker->priv != NULL);
c4edd0
 
c4edd0
         gdm_session_worker_unwatch_child (worker);
c4edd0
 
c4edd0
         if (worker->priv->child_pid > 0) {
c4edd0
                 gdm_signal_pid (worker->priv->child_pid, SIGTERM);
c4edd0
                 gdm_wait_on_pid (worker->priv->child_pid);
c4edd0
         }
c4edd0
 
c4edd0
+        if (worker->priv->pam_handle != NULL) {
c4edd0
+                gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
c4edd0
+        }
c4edd0
+
c4edd0
         g_object_unref (worker->priv->user_settings);
c4edd0
         g_free (worker->priv->service);
c4edd0
         g_free (worker->priv->x11_display_name);
c4edd0
         g_free (worker->priv->x11_authority_file);
c4edd0
         g_free (worker->priv->display_device);
c4edd0
         g_free (worker->priv->display_seat_id);
c4edd0
         g_free (worker->priv->hostname);
c4edd0
         g_free (worker->priv->username);
c4edd0
         g_free (worker->priv->server_address);
c4edd0
         g_strfreev (worker->priv->arguments);
c4edd0
         g_strfreev (worker->priv->extensions);
c4edd0
 
c4edd0
         g_hash_table_unref (worker->priv->reauthentication_requests);
c4edd0
 
c4edd0
         G_OBJECT_CLASS (gdm_session_worker_parent_class)->finalize (object);
c4edd0
 }
c4edd0
 
c4edd0
 GdmSessionWorker *
c4edd0
 gdm_session_worker_new (const char *address,
c4edd0
                         gboolean    is_reauth_session)
c4edd0
 {
c4edd0
         GObject *object;
c4edd0
 
c4edd0
         object = g_object_new (GDM_TYPE_SESSION_WORKER,
c4edd0
                                "server-address", address,
c4edd0
                                "is-reauth-session", is_reauth_session,
c4edd0
                                NULL);
c4edd0
 
c4edd0
         return GDM_SESSION_WORKER (object);
c4edd0
 }
c4edd0
-- 
c4edd0
2.21.0
c4edd0