diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-10-24 01:19:15 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-10-24 01:19:15 +0000 |
commit | 49d09e8d3c90b4649e0e99b8beca8b3b5ab143ee (patch) | |
tree | b63b661787019c4e0234e7868033abe632e8992d | |
parent | e08aaa700533e9db233ddc57cb8b894eaf2a7f6f (diff) | |
parent | c56dcec9941faa4e2c38e51ccd6b5b15bfa8d796 (diff) | |
download | smali-android14-qpr2-s3-release.tar.gz |
Snap for 10992821 from c56dcec9941faa4e2c38e51ccd6b5b15bfa8d796 to 24Q1-releaseandroid-14.0.0_r33android-14.0.0_r32android-14.0.0_r31android-14.0.0_r30android-14.0.0_r29android14-qpr2-s3-releaseandroid14-qpr2-s2-releaseandroid14-qpr2-s1-releaseandroid14-qpr2-release
Change-Id: I73d920b2f402978cce7eeabdd5d008fe45401f07
-rw-r--r-- | OWNERS | 6 | ||||
-rw-r--r-- | dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java | 31 | ||||
-rw-r--r-- | dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java | 10 | ||||
-rw-r--r-- | dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java | 3 |
4 files changed, 39 insertions, 11 deletions
@@ -1,4 +1,2 @@ -# Default code reviewers picked from top 3 or more developers. -# Please update this list if you find better candidates. -bgruv@google.com -narayan@google.com +sgjesse@google.com +ngeoffray@google.com diff --git a/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java b/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java index 791fffae..13a9fea1 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java @@ -44,22 +44,39 @@ public class VersionMap { return 27; case 39: return 28; + case 40: + return 34; + case 41: + return 35; default: return NO_VERSION; } } public static int mapApiToDexVersion(int api) { - if (api <= 23) { + if (api <= 23) { // Android M/6 return 35; } - if (api <= 25) { - return 37; - } - if (api <= 27) { - return 38; + switch (api) { + case 24: // Android N/7 + case 25: // Android N/7.1 + return 37; + case 26: // Android O/8 + case 27: // Android O/8.1 + return 38; + case 28: // Android P/9 + return 39; + case 29: // Android Q/10 + case 30: // Android R/11 + case 31: // Android S/12 + case 32: // Android S/12.1 + case 33: // Android T/13 + case 34: // Android U/14 + return 40; + case 35: // Android V/15 + return 41; } - return 39; + return NO_VERSION; } public static int mapArtVersionToApi(int artVersion) { diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java index 664428b9..210552c3 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java @@ -100,6 +100,16 @@ public class DexBackedDexFile extends BaseDexBuffer implements DexFile { classCount = readSmallUint(HeaderItem.CLASS_COUNT_OFFSET); classStartOffset = readSmallUint(HeaderItem.CLASS_START_OFFSET); mapOffset = readSmallUint(HeaderItem.MAP_OFFSET); + + if (dexVersion >= 41) { + // Reject non-trivial dex container (i.e. multiples dex files in the same physical file). + int container_off = readSmallUint(HeaderItem.CONTAINER_OFF_OFFSET); + int container_size = readSmallUint(HeaderItem.CONTAINER_SIZE_OFFSET); + int file_size = readSmallUint(HeaderItem.FILE_SIZE_OFFSET); + if (container_off != 0 || container_size != file_size) { + throw new DexUtil.UnsupportedFile(String.format("Dex container is not supported")); + } + } } public DexBackedDexFile(@Nullable Opcodes opcodes, @Nonnull BaseDexBuffer buf) { diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java index 619357aa..e6859b48 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java @@ -83,6 +83,9 @@ public class HeaderItem { public static final int CLASS_COUNT_OFFSET = 96; public static final int CLASS_START_OFFSET = 100; + public static final int CONTAINER_SIZE_OFFSET = 112; + public static final int CONTAINER_OFF_OFFSET = 116; + @Nonnull private RawDexFile dexFile; public HeaderItem(@Nonnull RawDexFile dexFile) { |