diff options
author | Nicholas Sauer <nicksauer@google.com> | 2016-04-15 09:54:49 -0700 |
---|---|---|
committer | Nicholas Sauer <nicksauer@google.com> | 2016-04-15 10:40:58 -0700 |
commit | fa2200a3be02933e8359fabf009717cb01841940 (patch) | |
tree | f77eba3dd5767cedc66d30c8c6d29d6208574fa4 | |
parent | 558a4e9ca4290224819bfa413625fde17e98ed69 (diff) | |
download | dalvik-fa2200a3be02933e8359fabf009717cb01841940.tar.gz |
Fix Dexdeps to accept dex version 037
Minor renaming and comments for clarity.
bug:28210069
Change-Id: I7bc24e5bfa708df5156e30f2e93528d70de30069
-rw-r--r-- | tools/dexdeps/src/com/android/dexdeps/DexData.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/tools/dexdeps/src/com/android/dexdeps/DexData.java b/tools/dexdeps/src/com/android/dexdeps/DexData.java index 89dff182a..6f4fe80e5 100644 --- a/tools/dexdeps/src/com/android/dexdeps/DexData.java +++ b/tools/dexdeps/src/com/android/dexdeps/DexData.java @@ -18,6 +18,7 @@ package com.android.dexdeps; import java.io.IOException; import java.io.RandomAccessFile; +import java.nio.charset.StandardCharsets; import java.util.Arrays; /** @@ -66,8 +67,8 @@ public class DexData { * Verifies the given magic number. */ private static boolean verifyMagic(byte[] magic) { - return Arrays.equals(magic, HeaderItem.DEX_FILE_MAGIC) || - Arrays.equals(magic, HeaderItem.DEX_FILE_MAGIC_API_13); + return Arrays.equals(magic, HeaderItem.DEX_FILE_MAGIC_v035) || + Arrays.equals(magic, HeaderItem.DEX_FILE_MAGIC_v037); } /** @@ -538,10 +539,16 @@ public class DexData { public int classDefsSize, classDefsOff; /* expected magic values */ - public static final byte[] DEX_FILE_MAGIC = { - 0x64, 0x65, 0x78, 0x0a, 0x30, 0x33, 0x36, 0x00 }; - public static final byte[] DEX_FILE_MAGIC_API_13 = { - 0x64, 0x65, 0x78, 0x0a, 0x30, 0x33, 0x35, 0x00 }; + public static final byte[] DEX_FILE_MAGIC_v035 = + "dex\n035\0".getBytes(StandardCharsets.US_ASCII); + + // Dex version 036 skipped because of an old dalvik bug on some versions + // of android where dex files with that version number would erroneously + // be accepted and run. See: art/runtime/dex_file.cc + + // V037 was introduced in API LEVEL 24 + public static final byte[] DEX_FILE_MAGIC_v037 = + "dex\n037\0".getBytes(StandardCharsets.US_ASCII); public static final int ENDIAN_CONSTANT = 0x12345678; public static final int REVERSE_ENDIAN_CONSTANT = 0x78563412; } |