Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0dc27616 authored by William Loh's avatar William Loh Committed by Automerger Merge Worker
Browse files

Limit length and number of MIME types you can set am: 9bdd9d27

parents 2e327bad 9bdd9d27
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -5797,6 +5797,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            final Computer snapshot = snapshotComputer();
            enforceOwnerRights(snapshot, packageName, Binder.getCallingUid());
            mimeTypes = CollectionUtils.emptyIfNull(mimeTypes);
            for (String mimeType : mimeTypes) {
                if (mimeType.length() > 255) {
                    throw new IllegalArgumentException("MIME type length exceeds 255 characters");
                }
            }
            final PackageStateInternal packageState = snapshot.getPackageStateInternal(packageName);
            Set<String> existingMimeTypes = packageState.getMimeGroups().get(mimeGroup);
            if (existingMimeTypes == null) {
@@ -5807,6 +5812,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService
                    && existingMimeTypes.containsAll(mimeTypes)) {
                return;
            }
            if (mimeTypes.size() > 500) {
                throw new IllegalStateException("Max limit on MIME types for MIME group "
                        + mimeGroup + " exceeded for package " + packageName);
            }

            ArraySet<String> mimeTypesSet = new ArraySet<>(mimeTypes);
            commitPackageStateMutation(null, packageName, packageStateWrite -> {
+3 −0
Original line number Diff line number Diff line
@@ -1856,6 +1856,9 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
        for (int i = component.getIntents().size() - 1; i >= 0; i--) {
            IntentFilter filter = component.getIntents().get(i).getIntentFilter();
            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));
            }
        }