mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-27 17:52:58 +02:00
GTlsInteraction: Fix incorrect locking of mutex
* Fix incorrect locking of mutex in g_tls_interaction_invoke_ask_password() https://bugzilla.gnome.org/show_bug.cgi?id=678758
This commit is contained in:
committed by
Matthias Clasen
parent
c1aac005d2
commit
5bf587caa0
@@ -321,6 +321,7 @@ g_tls_interaction_invoke_ask_password (GTlsInteraction *interaction,
|
|||||||
GTlsInteractionResult result;
|
GTlsInteractionResult result;
|
||||||
InvokeClosure *closure;
|
InvokeClosure *closure;
|
||||||
GTlsInteractionClass *klass;
|
GTlsInteractionClass *klass;
|
||||||
|
gboolean complete;
|
||||||
|
|
||||||
g_return_val_if_fail (G_IS_TLS_INTERACTION (interaction), G_TLS_INTERACTION_UNHANDLED);
|
g_return_val_if_fail (G_IS_TLS_INTERACTION (interaction), G_TLS_INTERACTION_UNHANDLED);
|
||||||
g_return_val_if_fail (G_IS_TLS_PASSWORD (password), G_TLS_INTERACTION_UNHANDLED);
|
g_return_val_if_fail (G_IS_TLS_PASSWORD (password), G_TLS_INTERACTION_UNHANDLED);
|
||||||
@@ -348,12 +349,16 @@ g_tls_interaction_invoke_ask_password (GTlsInteraction *interaction,
|
|||||||
*/
|
*/
|
||||||
if (g_main_context_acquire (interaction->priv->context))
|
if (g_main_context_acquire (interaction->priv->context))
|
||||||
{
|
{
|
||||||
while (!closure->complete)
|
for (;;)
|
||||||
{
|
{
|
||||||
g_mutex_unlock (&closure->mutex);
|
|
||||||
g_main_context_iteration (interaction->priv->context, TRUE);
|
|
||||||
g_mutex_lock (&closure->mutex);
|
g_mutex_lock (&closure->mutex);
|
||||||
|
complete = closure->complete;
|
||||||
|
g_mutex_unlock (&closure->mutex);
|
||||||
|
if (complete)
|
||||||
|
break;
|
||||||
|
g_main_context_iteration (interaction->priv->context, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_main_context_release (interaction->priv->context);
|
g_main_context_release (interaction->priv->context);
|
||||||
|
|
||||||
if (closure->error)
|
if (closure->error)
|
||||||
|
Reference in New Issue
Block a user