summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorYurii Zubrytskyi <zyy@google.com>2022-06-01 15:43:01 -0700
committerYurii Zubrytskyi <zyy@google.com>2022-06-06 15:00:44 -0700
commitbb146e1b71e9cc5bf9a4db91c188b559c2a0a954 (patch)
treefb8493f214fa1d0834a03d97225b8febacaf9ba7 /core/java/android
parent6f5250836d1aaf2266b565c2a623ae09df6a28b1 (diff)
Catch parsing errors for pre-release platforms
In cases when a parsed APK is built with a pre-release platform (e.g. Tiramisu for 33) our generic parsing code may not fail, as it is called for user packages as well, and a single bad package may disable the whole device. Bug: 233398506 Test: presubmits Change-Id: I7f93176efceac94b0768d0e4d5be1c28ccce23e3
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
index d2d00b237a0d..3e1c5bb3d7ec 100644
--- a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
+++ b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
@@ -368,8 +368,13 @@ public class FrameworkParsingPackageUtils {
return input.success(targetVers);
}
- if (allowUnknownCodenames && UnboundedSdkLevel.isAtMost(targetCode)) {
- return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
+ try {
+ if (allowUnknownCodenames && UnboundedSdkLevel.isAtMost(targetCode)) {
+ return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
+ }
+ } catch (IllegalArgumentException e) {
+ // isAtMost() throws it when encountering an older SDK codename
+ return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, e.getMessage());
}
// If it's a pre-release SDK and the codename matches this platform, it