|
|
01018b |
From 2c961b4794fe99571b62f2d8f970a97d5f7bb57f Mon Sep 17 00:00:00 2001
|
|
|
01018b |
From: Ray Strode <rstrode@redhat.com>
|
|
|
01018b |
Date: Wed, 20 Nov 2013 14:25:22 -0500
|
|
|
01018b |
Subject: [PATCH] session: set reauth sessions as such
|
|
|
01018b |
|
|
|
01018b |
Reauthentication sessions need subtly different behavior than initial
|
|
|
01018b |
login sessions with regard to pam. For instance, we want to refresh
|
|
|
01018b |
existing kerberos credentials instead of establishing new kerberos
|
|
|
01018b |
credentials.
|
|
|
01018b |
|
|
|
01018b |
GDM has all the code in place to do this properly, but lacks the actual
|
|
|
01018b |
call to mark reauthentication sessions as such.
|
|
|
01018b |
|
|
|
01018b |
This commit adds the missing call.
|
|
|
01018b |
|
|
|
01018b |
https://bugzilla.gnome.org/show_bug.cgi?id=691269
|
|
|
01018b |
---
|
|
|
01018b |
daemon/gdm-session.c | 2 ++
|
|
|
01018b |
1 file changed, 2 insertions(+)
|
|
|
01018b |
|
|
|
01018b |
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
|
|
|
01018b |
index d74bed6..e24ec7c 100644
|
|
|
01018b |
--- a/daemon/gdm-session.c
|
|
|
01018b |
+++ b/daemon/gdm-session.c
|
|
|
01018b |
@@ -1746,60 +1746,62 @@ worker_died (GdmSessionWorkerJob *job,
|
|
|
01018b |
g_debug ("GdmSession: Emitting conversation-stopped signal");
|
|
|
01018b |
g_signal_emit (self, signals[CONVERSATION_STOPPED], 0, conversation->service_name);
|
|
|
01018b |
if (self->priv->user_verifier_interface != NULL) {
|
|
|
01018b |
gdm_dbus_user_verifier_emit_conversation_stopped (self->priv->user_verifier_interface,
|
|
|
01018b |
conversation->service_name);
|
|
|
01018b |
}
|
|
|
01018b |
g_object_unref (conversation->job);
|
|
|
01018b |
|
|
|
01018b |
if (conversation->is_stopping) {
|
|
|
01018b |
g_object_unref (conversation->job);
|
|
|
01018b |
conversation->job = NULL;
|
|
|
01018b |
}
|
|
|
01018b |
|
|
|
01018b |
free_conversation (conversation);
|
|
|
01018b |
}
|
|
|
01018b |
|
|
|
01018b |
static GdmSessionConversation *
|
|
|
01018b |
start_conversation (GdmSession *self,
|
|
|
01018b |
const char *service_name)
|
|
|
01018b |
{
|
|
|
01018b |
GdmSessionConversation *conversation;
|
|
|
01018b |
char *job_name;
|
|
|
01018b |
|
|
|
01018b |
conversation = g_new0 (GdmSessionConversation, 1);
|
|
|
01018b |
conversation->session = g_object_ref (self);
|
|
|
01018b |
conversation->service_name = g_strdup (service_name);
|
|
|
01018b |
conversation->worker_pid = -1;
|
|
|
01018b |
conversation->job = gdm_session_worker_job_new ();
|
|
|
01018b |
gdm_session_worker_job_set_server_address (conversation->job,
|
|
|
01018b |
g_dbus_server_get_client_address (self->priv->worker_server));
|
|
|
01018b |
+ gdm_session_worker_job_set_for_reauth (conversation->job,
|
|
|
01018b |
+ self->priv->verification_mode == GDM_SESSION_VERIFICATION_MODE_REAUTHENTICATE);
|
|
|
01018b |
|
|
|
01018b |
if (self->priv->conversation_environment != NULL) {
|
|
|
01018b |
gdm_session_worker_job_set_environment (conversation->job,
|
|
|
01018b |
(const char * const *)
|
|
|
01018b |
self->priv->conversation_environment);
|
|
|
01018b |
|
|
|
01018b |
}
|
|
|
01018b |
g_signal_connect (conversation->job,
|
|
|
01018b |
"started",
|
|
|
01018b |
G_CALLBACK (worker_started),
|
|
|
01018b |
conversation);
|
|
|
01018b |
g_signal_connect (conversation->job,
|
|
|
01018b |
"exited",
|
|
|
01018b |
G_CALLBACK (worker_exited),
|
|
|
01018b |
conversation);
|
|
|
01018b |
g_signal_connect (conversation->job,
|
|
|
01018b |
"died",
|
|
|
01018b |
G_CALLBACK (worker_died),
|
|
|
01018b |
conversation);
|
|
|
01018b |
|
|
|
01018b |
job_name = g_strdup_printf ("gdm-session-worker [pam/%s]", service_name);
|
|
|
01018b |
if (!gdm_session_worker_job_start (conversation->job, job_name)) {
|
|
|
01018b |
g_object_unref (conversation->job);
|
|
|
01018b |
g_free (conversation->service_name);
|
|
|
01018b |
g_free (conversation);
|
|
|
01018b |
g_free (job_name);
|
|
|
01018b |
return NULL;
|
|
|
01018b |
}
|
|
|
01018b |
|
|
|
01018b |
g_free (job_name);
|
|
|
01018b |
--
|
|
|
01018b |
1.8.4.2
|
|
|
01018b |
|