[gnome-shell] authPrompt: Fix hang if user types password really fast



commit 6660342d2f41d4d22a23fa0653f8e1f36b6bf7dc
Author: Shivam Mishra <shivam m live com>
Date:   Wed Apr 8 01:23:42 2015 +0530

    authPrompt: Fix hang if user types password really fast
    
    It's possible for a user to type their password so quickly
    that GDM hasn't even had time to ask for the password yet,
    much less have time to process the answer.
    In that situation, we tuck the user response away as
    _preemptiveAnswer, and pass it along to GDM when GDM is finally
    ready for it.
    The problem is, there's a bug in the code, where we send
    null for the service name in the answer, instead of the right
    service name (say "gdm-password").
    This commit addresses the bug by making sure we don't pass the
    answer along, until the service name is properly set in
    _queryingService. To ensure that, answering query (answerQuery)
    based on _preemptiveAnswer has been shifted right below
    this._queryingService = serviceName;
    
    https://bugzilla.gnome.org/show_bug.cgi?id=737586

 js/gdm/authPrompt.js |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)
---
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index b123319..d712ddc 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -194,17 +194,15 @@ const AuthPrompt = new Lang.Class({
     },
 
     _onAskQuestion: function(verifier, serviceName, question, passwordChar) {
-        if (this._preemptiveAnswer) {
-            if (this._queryingService)
-                this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer);
-            this._preemptiveAnswer = null;
-            return;
-        }
-
         if (this._queryingService)
             this.clear();
 
         this._queryingService = serviceName;
+        if (this._preemptiveAnswer) {
+            this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer);
+            this._preemptiveAnswer = null;
+            return;
+        }
         this.setPasswordChar(passwordChar);
         this.setQuestion(question);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]