diff options
-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); |