summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/res/Element.java2
-rw-r--r--core/java/android/content/res/TypedArray.java14
-rw-r--r--core/java/android/content/res/Validator.java2
-rw-r--r--core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java25
4 files changed, 8 insertions, 35 deletions
diff --git a/core/java/android/content/res/Element.java b/core/java/android/content/res/Element.java
index 38dbec5a5529..e511469262d1 100644
--- a/core/java/android/content/res/Element.java
+++ b/core/java/android/content/res/Element.java
@@ -308,7 +308,7 @@ public class Element {
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 48adfb907ab4..bb2d2a0cc5c6 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -35,8 +35,6 @@ import com.android.internal.util.XmlUtils;
import dalvik.system.VMRuntime;
-import org.xmlpull.v1.XmlPullParserException;
-
import java.util.Arrays;
/**
@@ -309,7 +307,11 @@ public class TypedArray implements AutoCloseable {
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 @@ public class TypedArray implements AutoCloseable {
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 3b68452b1a5c..f72f3c49ee48 100644
--- a/core/java/android/content/res/Validator.java
+++ b/core/java/android/content/res/Validator.java
@@ -81,7 +81,7 @@ public class Validator {
* 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 dbe4fba5dfdb..f48359759e21 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 class ParsingPackageUtils {
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 @@ public class ParsingPackageUtils {
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 @@ public class ParsingPackageUtils {
// 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 @@ public class ParsingPackageUtils {
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(