Merge "Clear identity when checking strongauth flags" into rvc-qpr-dev

This commit is contained in:
Kevin Chyn
2020-07-20 20:36:24 +00:00
committed by Android (Google) Code Review

View File

@@ -247,14 +247,23 @@ public class FingerprintService extends BiometricServiceBase {
public void authenticate(final IBinder token, final long opId, final int userId, public void authenticate(final IBinder token, final long opId, final int userId,
final IFingerprintServiceReceiver receiver, final int flags, final IFingerprintServiceReceiver receiver, final int flags,
final String opPackageName) { final String opPackageName) {
if (Utils.isUserEncryptedOrLockdown(mLockPatternUtils, userId) // Keyguard check must be done on the caller's binder identity, since it also checks
&& Utils.isKeyguard(getContext(), opPackageName)) { // permission.
final boolean isKeyguard = Utils.isKeyguard(getContext(), opPackageName);
// Clear calling identity when checking LockPatternUtils for StrongAuth flags.
final long identity = Binder.clearCallingIdentity();
try {
if (isKeyguard && Utils.isUserEncryptedOrLockdown(mLockPatternUtils, userId)) {
// If this happens, something in KeyguardUpdateMonitor is wrong. // If this happens, something in KeyguardUpdateMonitor is wrong.
// SafetyNet for b/79776455 // SafetyNet for b/79776455
EventLog.writeEvent(0x534e4554, "79776455"); EventLog.writeEvent(0x534e4554, "79776455");
Slog.e(TAG, "Authenticate invoked when user is encrypted or lockdown"); Slog.e(TAG, "Authenticate invoked when user is encrypted or lockdown");
return; return;
} }
} finally {
Binder.restoreCallingIdentity(identity);
}
updateActiveGroup(userId, opPackageName); updateActiveGroup(userId, opPackageName);
final boolean restricted = isRestricted(); final boolean restricted = isRestricted();