[gdm/wip/more-gdm-client-fixes: 3/3] libgdm: Track reauth user verifier too
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm/wip/more-gdm-client-fixes: 3/3] libgdm: Track reauth user verifier too
- Date: Thu, 12 Nov 2020 21:49:44 +0000 (UTC)
commit c37740ba72bbe4be5304cef3306b8a3eb4976ec3
Author: Ray Strode <rstrode redhat com>
Date: Thu Nov 12 16:44:38 2020 -0500
libgdm: Track reauth user verifier too
The unlock screen may have user verifier extensions too, so we
need to track the reauth user verifier, too.
This API is clearly less than optimal, but fixing it is a task for
another day.
libgdm/gdm-client.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
---
diff --git a/libgdm/gdm-client.c b/libgdm/gdm-client.c
index 60808e02e..fb58f1a4c 100644
--- a/libgdm/gdm-client.c
+++ b/libgdm/gdm-client.c
@@ -41,6 +41,7 @@ struct _GdmClient
GObject parent;
GdmUserVerifier *user_verifier;
+ GdmUserVerifier *user_verifier_for_reauth;
GHashTable *user_verifier_extensions;
GdmGreeter *greeter;
@@ -569,6 +570,8 @@ gdm_client_open_reauthentication_channel_sync (GdmClient *client,
cancellable,
error);
+ g_set_weak_pointer (&client->user_verifier_for_reauth, user_verifier);
+
return user_verifier;
}
@@ -628,9 +631,15 @@ gdm_client_open_reauthentication_channel_finish (GdmClient *client,
GAsyncResult *result,
GError **error)
{
+ GdmUserVerifier *user_verifier;
+
g_return_val_if_fail (GDM_IS_CLIENT (client), NULL);
- return g_task_propagate_pointer (G_TASK (result), error);
+ user_verifier = g_task_propagate_pointer (G_TASK (result), error);
+
+ g_set_weak_pointer (&client->user_verifier_for_reauth, user_verifier);
+
+ return user_verifier;
}
/**
@@ -825,9 +834,14 @@ gdm_client_get_user_verifier_finish (GdmClient *client,
GdmUserVerifierChoiceList *
gdm_client_get_user_verifier_choice_list (GdmClient *client)
{
- GHashTable *user_verifier_extensions;
+ GHashTable *user_verifier_extensions = NULL;
+
+ if (client->user_verifier_for_reauth != NULL)
+ user_verifier_extensions = g_object_get_data (G_OBJECT (client->user_verifier_for_reauth),
"gdm-client-user-verifier-extensions");
+
+ if (user_verifier_extensions == NULL && client->user_verifier != NULL)
+ user_verifier_extensions = g_object_get_data (G_OBJECT (client->user_verifier),
"gdm-client-user-verifier-extensions");
- user_verifier_extensions = g_object_get_data (G_OBJECT (client->user_verifier),
"gdm-client-user-verifier-extensions");
if (user_verifier_extensions == NULL)
return NULL;
@@ -1369,6 +1383,7 @@ gdm_client_finalize (GObject *object)
g_return_if_fail (client != NULL);
g_clear_weak_pointer (&client->user_verifier);
+ g_clear_weak_pointer (&client->user_verifier_for_reauth);
g_clear_weak_pointer (&client->greeter);
g_clear_weak_pointer (&client->remote_greeter);
g_clear_weak_pointer (&client->chooser);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]