summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-03-15 13:41:32 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-03-15 13:41:32 +0000
commit76bd81a49a8751a8afeb9347919ff9b232d6623f (patch)
treecdb257f904f256765993b0809bc6541c7f3059c4
parentea5c64806d0796f16066d4f8e2d2942d8e9249c6 (diff)
parent4728d2114cae96127211637aea682ea89ceb7e24 (diff)
Merge "Make a copy of data stored in LockSettingsStorage cache"
-rw-r--r--services/core/java/com/android/server/locksettings/LockSettingsStorage.java12
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);