Limit length and number of MIME types you can set am: 9bdd9d274a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19539263 Change-Id: I699d292ad1d7da760c59d4bb375f88daff8a6743 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -5797,6 +5797,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|||||||
final Computer snapshot = snapshotComputer();
|
final Computer snapshot = snapshotComputer();
|
||||||
enforceOwnerRights(snapshot, packageName, Binder.getCallingUid());
|
enforceOwnerRights(snapshot, packageName, Binder.getCallingUid());
|
||||||
mimeTypes = CollectionUtils.emptyIfNull(mimeTypes);
|
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);
|
final PackageStateInternal packageState = snapshot.getPackageStateInternal(packageName);
|
||||||
Set<String> existingMimeTypes = packageState.getMimeGroups().get(mimeGroup);
|
Set<String> existingMimeTypes = packageState.getMimeGroups().get(mimeGroup);
|
||||||
if (existingMimeTypes == null) {
|
if (existingMimeTypes == null) {
|
||||||
@@ -5807,6 +5812,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|||||||
&& existingMimeTypes.containsAll(mimeTypes)) {
|
&& existingMimeTypes.containsAll(mimeTypes)) {
|
||||||
return;
|
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);
|
ArraySet<String> mimeTypesSet = new ArraySet<>(mimeTypes);
|
||||||
commitPackageStateMutation(null, packageName, packageStateWrite -> {
|
commitPackageStateMutation(null, packageName, packageStateWrite -> {
|
||||||
|
|||||||
@@ -1856,6 +1856,9 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
|
|||||||
for (int i = component.getIntents().size() - 1; i >= 0; i--) {
|
for (int i = component.getIntents().size() - 1; i >= 0; i--) {
|
||||||
IntentFilter filter = component.getIntents().get(i).getIntentFilter();
|
IntentFilter filter = component.getIntents().get(i).getIntentFilter();
|
||||||
for (int groupIndex = filter.countMimeGroups() - 1; groupIndex >= 0; groupIndex--) {
|
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));
|
mimeGroups = ArrayUtils.add(mimeGroups, filter.getMimeGroup(groupIndex));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user