fpService#authWithPrompt uses correct user handle.
CTS > BYOD Managed Provisioning > Authentication Bound Keys
Verified Fingerprint-bound key test works as expected.
Test: Manually verified CTS
Fixes: 231932206
Change-Id: I473c9c28cd0fbb01f4dd48447ddea8aa32834131
(cherry picked from commit f3650a6dee1ebe5f681699e4170c244e7bd7f9fc)
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
index 3a93d82..7a87804 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
@@ -332,8 +332,8 @@
if (!isKeyguard && !Utils.isSettings(getContext(), opPackageName)
&& sensorProps != null && sensorProps.isAnyUdfpsType()) {
try {
- return authenticateWithPrompt(operationId, sensorProps, userId, receiver,
- opPackageName, ignoreEnrollmentState);
+ return authenticateWithPrompt(operationId, sensorProps, callingUid,
+ callingUserId, receiver, opPackageName, ignoreEnrollmentState);
} catch (PackageManager.NameNotFoundException e) {
Slog.e(TAG, "Invalid package", e);
return -1;
@@ -347,6 +347,7 @@
private long authenticateWithPrompt(
final long operationId,
@NonNull final FingerprintSensorPropertiesInternal props,
+ final int uId,
final int userId,
final IFingerprintServiceReceiver receiver,
final String opPackageName,
@@ -354,7 +355,7 @@
final Context context = getUiContext();
final Context promptContext = context.createPackageContextAsUser(
- opPackageName, 0 /* flags */, UserHandle.getUserHandleForUid(userId));
+ opPackageName, 0 /* flags */, UserHandle.getUserHandleForUid(uId));
final Executor executor = context.getMainExecutor();
final BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(promptContext)