summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorRobin Lee <rgl@google.com>2015-03-10 12:34:28 +0000
committerRobin Lee <rgl@google.com>2015-03-10 16:27:43 +0000
commit68e4ba4dd0412f7923d3c22c92ebae485fc89961 (patch)
tree1d06fb3119119b1aca25758cd85603be7649808e /services
parentf3ece36535d4999cf2bfd2175a33da6c3cdf298e (diff)
downloadframeworks_base-68e4ba4dd0412f7923d3c22c92ebae485fc89961.zip
frameworks_base-68e4ba4dd0412f7923d3c22c92ebae485fc89961.tar.gz
frameworks_base-68e4ba4dd0412f7923d3c22c92ebae485fc89961.tar.bz2
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
Diffstat (limited to 'services')
-rw-r--r--services/core/java/com/android/server/LockSettingsStorage.java16
1 files 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 c03bb58..d81daa9 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()) {