summaryrefslogtreecommitdiff
path: root/core/java/android/database/sqlite
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2020-03-31 21:10:20 -0600
committerJeff Sharkey <jsharkey@android.com>2020-03-31 21:10:22 -0600
commitb36acbf6a71b01add2ed7b9e7f495125620f1256 (patch)
tree83047cf53692eb42d43a3e64bf860310f0731c73 /core/java/android/database/sqlite
parentc068acb6aeb3d86226f8eaccad7ddee8d4dfd8db (diff)
Deep copy arguments to avoid accidental mutation.
Otherwise we'd risk applying different arguments to active versus future connections. Bug: 152005629 Test: atest CtsDatabaseTestCases:android.database.sqlite.cts.SQLiteDatabaseTest Change-Id: I6e83a47d9874825fd14940245412372ef9227e79
Diffstat (limited to 'core/java/android/database/sqlite')
-rw-r--r--core/java/android/database/sqlite/SQLiteDatabase.java4
1 files changed, 4 insertions, 0 deletions
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index 24ac1527779e..7c4692c9e3af 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -1066,6 +1066,10 @@ public final class SQLiteDatabase extends SQLiteClosable {
throws SQLException {
Objects.requireNonNull(sql);
+ // Copy arguments to ensure that the caller doesn't accidentally change
+ // the values used by future connections
+ bindArgs = DatabaseUtils.deepCopyOf(bindArgs);
+
synchronized (mLock) {
throwIfNotOpenLocked();