diff options
| author | Florian Müllner <fmuellner@gnome.org> | 2017-03-14 20:02:51 (GMT) |
|---|---|---|
| committer | Florian Müllner <fmuellner@gnome.org> | 2017-03-20 18:02:07 (GMT) |
| commit | c0861b122725c2d0feef6b7fae0e121c3ea5be48 (patch) | |
| tree | fd0940835ed864cb4842f8dfb31714a321608bf1 | |
| parent | f97a3522e5267b891a57c0091725949efe5cab5c (diff) | |
| download | gnome-shell-c0861b1.zip gnome-shell-c0861b1.tar.xz | |
gdm: Handle absence of Fprint.Manager service
We rely on the service to detect whether a fingerprint reader is
present. It is fine to not support fingerprint authentication
when the service is missing, but currently we don't handle this
case at all and end up with a non-functional login screen.
https://bugzilla.gnome.org/show_bug.cgi?id=780063
| -rw-r--r-- | js/gdm/fingerprint.js | 8 | ||||
| -rw-r--r-- | js/gdm/util.js | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/js/gdm/fingerprint.js b/js/gdm/fingerprint.js index bce0bc6..2aeb377 100644 --- a/js/gdm/fingerprint.js +++ b/js/gdm/fingerprint.js @@ -23,6 +23,12 @@ function FprintManager() { g_object_path: '/net/reactivated/Fprint/Manager', g_flags: (Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) }); - self.init(null); + try { + self.init(null); + } catch(e) { + log('Failed to connect to Fprint service: ' + e.message); + return null; + } + return self; } diff --git a/js/gdm/util.js b/js/gdm/util.js index 2ff59cb..6876cbe 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -133,7 +133,7 @@ const ShellUserVerifier = new Lang.Class({ Lang.bind(this, this._updateDefaultService)); this._updateDefaultService(); - this._fprintManager = new Fprint.FprintManager(); + this._fprintManager = Fprint.FprintManager(); this._smartcardManager = SmartcardManager.getSmartcardManager(); // We check for smartcards right away, since an inserted smartcard @@ -293,7 +293,8 @@ const ShellUserVerifier = new Lang.Class({ _checkForFingerprintReader: function() { this._haveFingerprintReader = false; - if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) { + if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY) || + this._fprintManager == null) { this._updateDefaultService(); return; } |