From 687c38332a552c28d366cc839012d5f5ba6e6779 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Thu, 14 May 2020 16:24:18 -0700 Subject: [PATCH 1/2] Add null pointer check for addLockoutResetCallback Fixes: 155988975 Test: Follow steps in comment#3, no system_server crash Change-Id: Ie138286efe5c08ddc98cc74a034558ec43d5cf35 --- .../com/android/server/biometrics/BiometricServiceBase.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java index 808f8c21cc8de..5a6ab4e594245 100644 --- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java +++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java @@ -978,6 +978,10 @@ public abstract class BiometricServiceBase extends SystemService } protected void addLockoutResetCallback(IBiometricServiceLockoutResetCallback callback) { + if (callback == null) { + Slog.w(getTag(), "Null LockoutResetCallback"); + return; + } mHandler.post(() -> { final LockoutResetMonitor monitor = new LockoutResetMonitor(callback); if (!mLockoutMonitors.contains(monitor)) { From 932fd9bda0498834ee8310af222336740ba7695d Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Thu, 14 May 2020 16:29:24 -0700 Subject: [PATCH 2/2] Add missing permission check for addLockoutResetCallback This is not a public API and is lacking permission checks Bug: 155988975 Test: No permission error from keyguard Change-Id: I5e3eeb869f1373d6a08470815ea673190b7598f6 --- .../server/biometrics/fingerprint/FingerprintService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java index 8520f5aa0632a..d90f3afd8dca4 100644 --- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java @@ -330,6 +330,7 @@ public class FingerprintService extends BiometricServiceBase { @Override public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback) throws RemoteException { + checkPermission(USE_BIOMETRIC_INTERNAL); FingerprintService.super.addLockoutResetCallback(callback); }