Merge "Remove redundant limits in package parser." into main
diff --git a/core/java/android/content/res/Element.java b/core/java/android/content/res/Element.java
index 38dbec5..e511469 100644
--- a/core/java/android/content/res/Element.java
+++ b/core/java/android/content/res/Element.java
@@ -308,7 +308,7 @@
initializeCounter(TAG_USES_LIBRARY, 1000);
initializeCounter(TAG_ACTIVITY_ALIAS, 4000);
initializeCounter(TAG_PROVIDER, 8000);
- initializeCounter(TAG_ACTIVITY, 40000);
+ initializeCounter(TAG_ACTIVITY, 30000);
break;
case TAG_COMPATIBLE_SCREENS:
initializeCounter(TAG_SCREEN, 4000);
diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java
index 48adfb9..bb2d2a0 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -35,8 +35,6 @@
import dalvik.system.VMRuntime;
-import org.xmlpull.v1.XmlPullParserException;
-
import java.util.Arrays;
/**
@@ -309,7 +307,11 @@
if (type == TypedValue.TYPE_STRING) {
final int cookie = data[index + STYLE_ASSET_COOKIE];
if (cookie < 0) {
- return mXml.getPooledString(data[index + STYLE_DATA]).toString();
+ String value = mXml.getPooledString(data[index + STYLE_DATA]).toString();
+ if (value != null && mXml != null && mXml.mValidator != null) {
+ mXml.mValidator.validateResStrAttr(mXml, index, value);
+ }
+ return value;
}
}
return null;
@@ -1402,11 +1404,7 @@
value = mAssets.getPooledStringForCookie(cookie, data[index + STYLE_DATA]);
}
if (value != null && mXml != null && mXml.mValidator != null) {
- try {
- mXml.mValidator.validateResStrAttr(mXml, index / STYLE_NUM_ENTRIES, value);
- } catch (XmlPullParserException e) {
- throw new RuntimeException("Failed to validate resource string: " + e.getMessage());
- }
+ mXml.mValidator.validateResStrAttr(mXml, index / STYLE_NUM_ENTRIES, value);
}
return value;
}
diff --git a/core/java/android/content/res/Validator.java b/core/java/android/content/res/Validator.java
index 3b68452..f72f3c4 100644
--- a/core/java/android/content/res/Validator.java
+++ b/core/java/android/content/res/Validator.java
@@ -81,7 +81,7 @@
* Validates the resource string of a manifest tag attribute.
*/
public void validateResStrAttr(@NonNull XmlPullParser parser, @StyleableRes int index,
- CharSequence stringValue) throws XmlPullParserException {
+ CharSequence stringValue) {
if (parser.getDepth() > mElements.size()) {
return;
}
diff --git a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
index dbe4fba..f483597 100644
--- a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
+++ b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
@@ -241,14 +241,6 @@
public static final int PARSE_CHATTY = 1 << 31;
- /** The total maximum number of activities, services, providers and activity-aliases */
- private static final int MAX_NUM_COMPONENTS = 30000;
- private static final String MAX_NUM_COMPONENTS_ERR_MSG =
- "Total number of components has exceeded the maximum number: " + MAX_NUM_COMPONENTS;
-
- /** The maximum permission name length. */
- private static final int MAX_PERMISSION_NAME_LENGTH = 512;
-
@IntDef(flag = true, prefix = { "PARSE_" }, value = {
PARSE_CHATTY,
PARSE_COLLECT_CERTIFICATES,
@@ -904,20 +896,11 @@
if (result.isError()) {
return input.error(result);
}
-
- if (hasTooManyComponents(pkg)) {
- return input.error(MAX_NUM_COMPONENTS_ERR_MSG);
- }
}
return input.success(pkg);
}
- private static boolean hasTooManyComponents(ParsingPackage pkg) {
- return (pkg.getActivities().size() + pkg.getServices().size() + pkg.getProviders().size()
- + pkg.getReceivers().size()) > MAX_NUM_COMPONENTS;
- }
-
/**
* For parsing non-MainComponents. Main ones have an order and some special handling which is
* done directly in {@link #parseSplitApplication(ParseInput, ParsingPackage, Resources,
@@ -1360,11 +1343,6 @@
// that may change.
String name = sa.getNonResourceString(
R.styleable.AndroidManifestUsesPermission_name);
- if (TextUtils.length(name) > MAX_PERMISSION_NAME_LENGTH) {
- return input.error(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
- "The name in the <uses-permission> is greater than "
- + MAX_PERMISSION_NAME_LENGTH);
- }
int minSdkVersion = parseMinOrMaxSdkVersion(sa,
R.styleable.AndroidManifestUsesPermission_minSdkVersion,
@@ -2277,9 +2255,6 @@
if (result.isError()) {
return input.error(result);
}
- if (hasTooManyComponents(pkg)) {
- return input.error(MAX_NUM_COMPONENTS_ERR_MSG);
- }
}
if (TextUtils.isEmpty(pkg.getStaticSharedLibraryName()) && TextUtils.isEmpty(