diff options
| author | Yurii Zubrytskyi <zyy@google.com> | 2022-06-01 15:43:01 -0700 |
|---|---|---|
| committer | Yurii Zubrytskyi <zyy@google.com> | 2022-06-06 15:00:44 -0700 |
| commit | bb146e1b71e9cc5bf9a4db91c188b559c2a0a954 (patch) | |
| tree | fb8493f214fa1d0834a03d97225b8febacaf9ba7 /core/java/android | |
| parent | 6f5250836d1aaf2266b565c2a623ae09df6a28b1 (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.java | 9 |
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 |
