diff options
| -rw-r--r-- | services/core/java/com/android/server/SyntheticPasswordManager.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/SyntheticPasswordManager.java b/services/core/java/com/android/server/SyntheticPasswordManager.java index 6ec74e133e8d..f797517744e6 100644 --- a/services/core/java/com/android/server/SyntheticPasswordManager.java +++ b/services/core/java/com/android/server/SyntheticPasswordManager.java @@ -346,11 +346,14 @@ public class SyntheticPasswordManager { PasswordData pwd = PasswordData.create(credentialType); byte[] pwdToken = computePasswordToken(credential, pwd); + // In case GK enrollment leaves persistent state around (in RPMB), this will nuke them + // to prevent them from accumulating and causing problems. + gatekeeper.clearSecureUserId(fakeUid(userId)); GateKeeperResponse response = gatekeeper.enroll(fakeUid(userId), null, null, passwordTokenToGkInput(pwdToken)); if (response.getResponseCode() != GateKeeperResponse.RESPONSE_OK) { Log.e(TAG, "Fail to enroll user password when creating SP for user " + userId); - return 0; + return DEFAULT_HANDLE; } pwd.passwordHandle = response.getPayload(); long sid = sidFromPasswordHandle(pwd.passwordHandle); |