Fix unintended deletion of reused weaver slots during user removal
During user deletion, getNextAvailableWeaverSlot() might return a slot that's currently taken by the to-be-removed user, because the user is marked as partial so it's not returned from UserManager in the list of users and SyntheticPasswordManager will not attempt to track which slot that user has used. This slot might then be reused by a newly-created user. Meanwhile SyntheticPasswordManager will also try to explicitly delete slots for the deleted user during ACTION_USER_REMOVED, and if this happens after the slot is reused by the new user, the weaver slot will be corrupted, leading to failure to unlock the new user later. Quick fix by double checking if slot is reused during user deletion. Test: Add device lock; create work profile; reboot device; delete the current profile and quickly re-create one. Verify the new profile can still be unlocked after another reboot Bug: 76134651 Change-Id: I89769b7cbcf64f2562717c98e3f15ab0fbb38bf0
Loading
Please register or sign in to comment