diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-10-30 21:05:23 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-10-30 21:05:23 +0000 |
commit | eab33925503ff3dad320d651c4bf56345bba63af (patch) | |
tree | b63b661787019c4e0234e7868033abe632e8992d | |
parent | ce80465863114bcae9c64c8b3633d28e4b8bdcdd (diff) | |
parent | aa11068b329eba01e56236c10164982df0346467 (diff) | |
download | smali-simpleperf-release.tar.gz |
Merge "Snap for 11024862 from 12595bf3a288e86520a76242284a138532f2168e to simpleperf-release" into simpleperf-releasesimpleperf-release
-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) { |