Clean up ex-users in lock settings db
Just in case a userid was not properly cleaned when the user was removed, make sure it is cleaned up when a new user takes up the same userid. This prevents inconsistent lockscreen state and avoids a crash in Settings when trying to set a password for the new user. Fixes: 29412112 Change-Id: Ic4f0efbb97786b0290c74325b28c9d74825e9e53
This commit is contained in:
@@ -423,6 +423,9 @@ public class LockSettingsService extends ILockSettings.Stub {
|
||||
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;
|
||||
@@ -433,7 +436,7 @@ public class LockSettingsService extends ILockSettings.Stub {
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1464,7 +1467,7 @@ public class LockSettingsService extends ILockSettings.Stub {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void removeUser(int userId) {
|
||||
private void removeUser(int userId, boolean unknownUser) {
|
||||
mStorage.removeUser(userId);
|
||||
mStrongAuth.removeUser(userId);
|
||||
|
||||
@@ -1479,7 +1482,7 @@ public class LockSettingsService extends ILockSettings.Stub {
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user