diff options
author | 2019-03-15 13:41:32 +0000 | |
---|---|---|
committer | 2019-03-15 13:41:32 +0000 | |
commit | 76bd81a49a8751a8afeb9347919ff9b232d6623f (patch) | |
tree | cdb257f904f256765993b0809bc6541c7f3059c4 | |
parent | ea5c64806d0796f16066d4f8e2d2942d8e9249c6 (diff) | |
parent | 4728d2114cae96127211637aea682ea89ceb7e24 (diff) |
Merge "Make a copy of data stored in LockSettingsStorage cache"
-rw-r--r-- | services/core/java/com/android/server/locksettings/LockSettingsStorage.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java index 98f1740aa986..2ede384f3edf 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java @@ -29,7 +29,6 @@ import android.database.sqlite.SQLiteOpenHelper; import android.os.Environment; import android.os.UserHandle; import android.os.UserManager; -import android.os.storage.StorageManager; import android.util.ArrayMap; import android.util.Log; import android.util.Slog; @@ -49,6 +48,7 @@ import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -808,7 +808,7 @@ class LockSettingsStorage { } byte[] peekFile(String fileName) { - return (byte[]) peek(CacheKey.TYPE_FILE, fileName, -1 /* userId */); + return copyOf((byte[]) peek(CacheKey.TYPE_FILE, fileName, -1 /* userId */)); } boolean hasFile(String fileName) { @@ -816,11 +816,11 @@ class LockSettingsStorage { } void putFile(String key, byte[] value) { - put(CacheKey.TYPE_FILE, key, value, -1 /* userId */); + put(CacheKey.TYPE_FILE, key, copyOf(value), -1 /* userId */); } void putFileIfUnchanged(String key, byte[] value, int version) { - putIfUnchanged(CacheKey.TYPE_FILE, key, value, -1 /* userId */, version); + putIfUnchanged(CacheKey.TYPE_FILE, key, copyOf(value), -1 /* userId */, version); } void setFetched(int userId) { @@ -868,6 +868,10 @@ class LockSettingsStorage { mVersion++; } + private byte[] copyOf(byte[] data) { + return data != null ? Arrays.copyOf(data, data.length) : null; + } + synchronized void purgePath(String path) { for (int i = mCache.size() - 1; i >= 0; i--) { CacheKey entry = mCache.keyAt(i); |