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

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