summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Sauer <nicksauer@google.com>2016-04-15 09:54:49 -0700
committerNicholas Sauer <nicksauer@google.com>2016-04-15 10:40:58 -0700
commitfa2200a3be02933e8359fabf009717cb01841940 (patch)
treef77eba3dd5767cedc66d30c8c6d29d6208574fa4
parent558a4e9ca4290224819bfa413625fde17e98ed69 (diff)
downloaddalvik-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.java19
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;
}