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
This commit is contained in:
Florian Müllner 2017-03-14 21:02:51 +01:00
parent f97a3522e5
commit c0861b1227
2 changed files with 10 additions and 3 deletions

View File

@ -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;
}

View File

@ -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;
}