Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f11a5740 authored by Amith Yamasani's avatar Amith Yamasani
Browse files

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
parent d430f1a0
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -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);
        }
    }