summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Loh <wloh@google.com>2022-10-12 18:54:48 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-10-12 18:54:48 +0000
commitbcd7713fade6b5194d17092e40e421bfc3564226 (patch)
tree58ea95ad8652fb0ff6bb4e424d2f3f353aee0ef7
parente456e2f66e2c9b3207be68cb86f64133930e03c0 (diff)
parentd47de97f03db2a29424c23e39d062539d2ac1ac4 (diff)
downloadbase-bcd7713fade6b5194d17092e40e421bfc3564226.tar.gz
Limit length and number of MIME types you can set am: 3ae3406b97 am: d47de97f03
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19785208 Change-Id: I23a5c8223e3d9d22b08eaa7a59fbf53c9351e839 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackageImpl.java3
-rw-r--r--services/core/java/com/android/server/pm/PackageSetting.java9
2 files changed, 12 insertions, 0 deletions
diff --git a/core/java/android/content/pm/parsing/ParsingPackageImpl.java b/core/java/android/content/pm/parsing/ParsingPackageImpl.java
index 5a7f21040d0a..a6e1867fce0c 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageImpl.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageImpl.java
@@ -1695,6 +1695,9 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
for (int i = component.getIntents().size() - 1; i >= 0; i--) {
IntentFilter filter = component.getIntents().get(i);
for (int groupIndex = filter.countMimeGroups() - 1; groupIndex >= 0; groupIndex--) {
+ if (mimeGroups != null && mimeGroups.size() > 500) {
+ throw new IllegalStateException("Max limit on number of MIME Groups reached");
+ }
mimeGroups = ArrayUtils.add(mimeGroups, filter.getMimeGroup(groupIndex));
}
}
diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java
index 376326264d9c..d8f902a9a086 100644
--- a/services/core/java/com/android/server/pm/PackageSetting.java
+++ b/services/core/java/com/android/server/pm/PackageSetting.java
@@ -328,11 +328,20 @@ public class PackageSetting extends PackageSettingBase {
}
public boolean setMimeGroup(String mimeGroup, List<String> mimeTypes) {
+ for (String mimeType : mimeTypes) {
+ if (mimeType.length() > 255) {
+ throw new IllegalArgumentException("MIME type length exceeds 255 characters");
+ }
+ }
ArraySet<String> oldMimeTypes = getMimeGroupInternal(mimeGroup);
if (oldMimeTypes == null) {
throw new IllegalArgumentException("Unknown MIME group " + mimeGroup
+ " for package " + name);
}
+ if (mimeTypes.size() > 500) {
+ throw new IllegalStateException("Max limit on MIME types for MIME group "
+ + mimeGroup + " exceeded for package " + name);
+ }
ArraySet<String> newMimeTypes = new ArraySet<>(mimeTypes);
boolean hasChanges = !newMimeTypes.equals(oldMimeTypes);