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

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