Relax length restriction on meta-data values.
Current restrictions on the value attribute of the <meta-data> tag in
the manifest is preventing some legitimate apps from being installed.
Relaxing this restriction fix this. This will be followed up with a new
restriction based on the total size of all meta-data values per
component.
Bug: 309027507
Test: atest AndroidPackageParsingValidationTest
Change-Id: Ic1dfdf10e4b4ec460dc56a762649ccd15235dd63
diff --git a/core/java/android/content/res/Element.java b/core/java/android/content/res/Element.java
index 1ef3d27..1667896 100644
--- a/core/java/android/content/res/Element.java
+++ b/core/java/android/content/res/Element.java
@@ -40,7 +40,7 @@
private static final int MAX_ATTR_LEN_MIMETYPE = 512;
public static final int MAX_ATTR_LEN_NAME = 1024;
public static final int MAX_ATTR_LEN_PATH = 4000;
- public static final int MAX_ATTR_LEN_DATA_VALUE = 4000;
+ public static final int MAX_ATTR_LEN_VALUE = 32_768;
private static final String BAD_COMPONENT_NAME_CHARS = ";,[](){}:?%^*|/\\";
@@ -386,7 +386,7 @@
case TAG_ATTR_PATH_SUFFIX:
return MAX_ATTR_LEN_PATH;
case TAG_ATTR_VALUE:
- return MAX_ATTR_LEN_DATA_VALUE;
+ return MAX_ATTR_LEN_VALUE;
case TAG_ATTR_REQUIRED_SYSTEM_PROPERTY_VALUE:
return PROP_VALUE_MAX;
default:
@@ -566,7 +566,7 @@
case R.styleable.AndroidManifestMetaData_name:
return MAX_ATTR_LEN_NAME;
case R.styleable.AndroidManifestMetaData_value:
- return MAX_ATTR_LEN_DATA_VALUE;
+ return MAX_ATTR_LEN_VALUE;
default:
return DEFAULT_MAX_STRING_ATTR_LENGTH;
}
@@ -636,7 +636,7 @@
case R.styleable.AndroidManifestProperty_name:
return MAX_ATTR_LEN_NAME;
case R.styleable.AndroidManifestProperty_value:
- return MAX_ATTR_LEN_DATA_VALUE;
+ return MAX_ATTR_LEN_VALUE;
default:
return DEFAULT_MAX_STRING_ATTR_LENGTH;
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingValidationTest.kt b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingValidationTest.kt
index 20c0b0a..cf2b748 100644
--- a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingValidationTest.kt
+++ b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingValidationTest.kt
@@ -427,7 +427,7 @@
fun parseMetaDataTag() {
val tag = "meta-data"
validateTagAttr(tag, "name", R.styleable.AndroidManifestMetaData_name, 1024)
- validateTagAttr(tag, "value", R.styleable.AndroidManifestMetaData_value, 4000)
+ validateTagAttr(tag, "value", R.styleable.AndroidManifestMetaData_value, 32_768)
}
@Test