summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2017-03-14 20:02:51 (GMT)
committerFlorian Müllner <fmuellner@gnome.org>2017-03-20 18:02:07 (GMT)
commitc0861b122725c2d0feef6b7fae0e121c3ea5be48 (patch)
treefd0940835ed864cb4842f8dfb31714a321608bf1
parentf97a3522e5267b891a57c0091725949efe5cab5c (diff)
downloadgnome-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.js8
-rw-r--r--js/gdm/util.js5
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;
}