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