diff options
| -rw-r--r-- | core/java/android/content/pm/parsing/ParsingPackageImpl.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageSetting.java | 9 | 
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 295107a06f99..707523a192f0 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageImpl.java +++ b/core/java/android/content/pm/parsing/ParsingPackageImpl.java @@ -1584,6 +1584,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 432d7f335ebc..d3f557d18178 100644 --- a/services/core/java/com/android/server/pm/PackageSetting.java +++ b/services/core/java/com/android/server/pm/PackageSetting.java @@ -242,11 +242,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); |