if (Intent.ACTION_USER_ADDED.equals(intent.getAction())) {
// Notify keystore that a new user was added.
final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
+ if (userHandle > UserHandle.USER_SYSTEM) {
+ removeUser(userHandle, /* unknownUser= */ true);
+ }
final KeyStore ks = KeyStore.getInstance();
final UserInfo parentInfo = mUserManager.getProfileParent(userHandle);
final int parentHandle = parentInfo != null ? parentInfo.id : -1;
} else if (Intent.ACTION_USER_REMOVED.equals(intent.getAction())) {
final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
if (userHandle > 0) {
- removeUser(userHandle);
+ removeUser(userHandle, /* unknownUser= */ false);
}
}
}
return false;
}
- private void removeUser(int userId) {
+ private void removeUser(int userId, boolean unknownUser) {
mStorage.removeUser(userId);
mStrongAuth.removeUser(userId);
} catch (RemoteException ex) {
Slog.w(TAG, "unable to clear GK secure user id");
}
- if (mUserManager.getUserInfo(userId).isManagedProfile()) {
+ if (unknownUser || mUserManager.getUserInfo(userId).isManagedProfile()) {
removeKeystoreProfileKey(userId);
}
}