summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author Garvita Jain <garvitajain@google.com> 2025-02-10 04:33:15 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-10 04:33:15 -0800
commitf73167ad3062290caa193a8df9ced47508911c69 (patch)
tree934112fa593c1153a6efb302a0dec37187939d4b /src
parenteb4be252b7fac8003a25ce42d501a24b9ea369c7 (diff)
parent3d3232826064ce9503f6536644a0cac7373db92f (diff)
Merge "Limit number of uris sent to a Bulk API" into main
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/media/MediaProvider.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index b7f85107c..3985e79fa 100644
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -552,6 +552,14 @@ public class MediaProvider extends ContentProvider {
@EnabledSince(targetSdkVersion = Build.VERSION_CODES.BAKLAVA)
static final long LOCKDOWN_MEDIASTORE_VERSION = 343977174L;
+ /**
+ * Number of uris sent to bulk write/delete/trash/favorite requests restricted at 2000.
+ * Attempting to send more than 2000 uris will result in an IllegalArgumentException.
+ */
+ @ChangeId
+ @EnabledSince(targetSdkVersion = Build.VERSION_CODES.BAKLAVA)
+ static final long LIMIT_CREATE_REQUEST_URIS = 203408344L;
+
@GuardedBy("mPendingOpenInfo")
private final Map<Integer, PendingOpenInfo> mPendingOpenInfo = new ArrayMap<>();
@@ -8173,6 +8181,11 @@ public class MediaProvider extends ContentProvider {
final ClipData clipData = extras.getParcelable(MediaStore.EXTRA_CLIP_DATA);
final List<Uri> uris = collectUris(clipData);
+ if (getCallingPackageTargetSdkVersion() > Build.VERSION_CODES.VANILLA_ICE_CREAM
+ && CompatChanges.isChangeEnabled(LIMIT_CREATE_REQUEST_URIS) && uris.size() > 2000) {
+ throw new IllegalArgumentException("URI list restricted to 2000 per request");
+ }
+
for (Uri uri : uris) {
final int match = matchUri(uri, false);
switch (match) {