From 68e4ba4dd0412f7923d3c22c92ebae485fc89961 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Tue, 10 Mar 2015 12:34:28 +0000 Subject: [PATCH] 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 --- .../com/android/server/LockSettingsStorage.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/LockSettingsStorage.java b/services/core/java/com/android/server/LockSettingsStorage.java index c03bb585a94f2..d81daa904de51 100644 --- a/services/core/java/com/android/server/LockSettingsStorage.java +++ b/services/core/java/com/android/server/LockSettingsStorage.java @@ -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 + 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()) {