diff options
author | 2025-02-10 04:33:15 -0800 | |
---|---|---|
committer | 2025-02-10 04:33:15 -0800 | |
commit | f73167ad3062290caa193a8df9ced47508911c69 (patch) | |
tree | 934112fa593c1153a6efb302a0dec37187939d4b /src | |
parent | eb4be252b7fac8003a25ce42d501a24b9ea369c7 (diff) | |
parent | 3d3232826064ce9503f6536644a0cac7373db92f (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.java | 13 |
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) { |