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

Commit 68e4ba4d authored by Robin Lee's avatar Robin Lee
Browse files

Move more file handling into LockSettingsStorage

Strengthens the guarantee of only one kind of lock type existing at one
time by clearing all of the relevant files out closer to time of write.

Change-Id: I141103dab5d7d4bc80b05a22b8566326d1c9e7e1
parent f3ece365
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -238,12 +238,21 @@ class LockSettingsStorage {

    public void writePatternHash(byte[] hash, int userId) {
        writeFile(getLockPatternFilename(userId), hash);
        clearPasswordHash(userId);
    }

    private void clearPatternHash(int userId) {
        writeFile(getLockPatternFilename(userId), null);
    }

    public void writePasswordHash(byte[] hash, int userId) {
        writeFile(getLockPasswordFilename(userId), hash);
        clearPatternHash(userId);
    }

    private void clearPasswordHash(int userId) {
        writeFile(getLockPasswordFilename(userId), null);
    }

    @VisibleForTesting
    String getLockPatternFilename(int userId) {
@@ -279,16 +288,15 @@ class LockSettingsStorage {
        return userId;
    }


    public void removeUser(int userId) {
        SQLiteDatabase db = mOpenHelper.getWritableDatabase();

        final UserManager um = (UserManager) mContext.getSystemService(USER_SERVICE);
        final UserInfo parentInfo = um.getProfileParent(userId);

        synchronized (mFileWriteLock) {
        if (parentInfo == null) {
            // This user owns its lock settings files - safe to delete them
            synchronized (mFileWriteLock) {
                String name = getLockPasswordFilename(userId);
                File file = new File(name);
                if (file.exists()) {