Merge "[pm] restrict max number of components at parsing" into tm-dev
This commit is contained in:
@@ -242,6 +242,11 @@ public class ParsingPackageUtils {
|
|||||||
|
|
||||||
public static final int PARSE_CHATTY = 1 << 31;
|
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;
|
||||||
|
|
||||||
@IntDef(flag = true, prefix = { "PARSE_" }, value = {
|
@IntDef(flag = true, prefix = { "PARSE_" }, value = {
|
||||||
PARSE_CHATTY,
|
PARSE_CHATTY,
|
||||||
PARSE_COLLECT_CERTIFICATES,
|
PARSE_COLLECT_CERTIFICATES,
|
||||||
@@ -837,11 +842,20 @@ public class ParsingPackageUtils {
|
|||||||
if (result.isError()) {
|
if (result.isError()) {
|
||||||
return input.error(result);
|
return input.error(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hasTooManyComponents(pkg)) {
|
||||||
|
return input.error(MAX_NUM_COMPONENTS_ERR_MSG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return input.success(pkg);
|
return input.success(pkg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean hasTooManyComponents(ParsingPackage pkg) {
|
||||||
|
return pkg.getActivities().size() + pkg.getServices().size() + pkg.getProviders().size()
|
||||||
|
> MAX_NUM_COMPONENTS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For parsing non-MainComponents. Main ones have an order and some special handling which is
|
* For parsing non-MainComponents. Main ones have an order and some special handling which is
|
||||||
* done directly in {@link #parseSplitApplication(ParseInput, ParsingPackage, Resources,
|
* done directly in {@link #parseSplitApplication(ParseInput, ParsingPackage, Resources,
|
||||||
@@ -2145,6 +2159,9 @@ public class ParsingPackageUtils {
|
|||||||
if (result.isError()) {
|
if (result.isError()) {
|
||||||
return input.error(result);
|
return input.error(result);
|
||||||
}
|
}
|
||||||
|
if (hasTooManyComponents(pkg)) {
|
||||||
|
return input.error(MAX_NUM_COMPONENTS_ERR_MSG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TextUtils.isEmpty(pkg.getStaticSharedLibName()) && TextUtils.isEmpty(
|
if (TextUtils.isEmpty(pkg.getStaticSharedLibName()) && TextUtils.isEmpty(
|
||||||
|
|||||||
Reference in New Issue
Block a user