summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2012-06-29 16:45:06 -0700
committerRicardo Cerqueira <cyanogenmod@cerqueira.org>2012-07-10 20:08:05 +0100
commitb492fe6bf6ae464e1364cc38f50bfedbb297bde5 (patch)
treed76d4546b58066d6318bf5303bb44e44a8b3fda4
parent89279dbcf9636a9728254124f069de6587923385 (diff)
downloadandroid_dalvik-b492fe6bf6ae464e1364cc38f50bfedbb297bde5.tar.gz
android_dalvik-b492fe6bf6ae464e1364cc38f50bfedbb297bde5.tar.bz2
android_dalvik-b492fe6bf6ae464e1364cc38f50bfedbb297bde5.zip
Fix a possible off-by-one in the verifier.
Bug: http://code.google.com/p/android/issues/detail?id=10863 Change-Id: I604f9a5ea08b6a6934b3ba522e1fda0bb738f81c
-rw-r--r--vm/analysis/CodeVerify.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/vm/analysis/CodeVerify.cpp b/vm/analysis/CodeVerify.cpp
index 768e3e40d..a230590db 100644
--- a/vm/analysis/CodeVerify.cpp
+++ b/vm/analysis/CodeVerify.cpp
@@ -3737,7 +3737,7 @@ static bool doCodeVerification(VerifierData* vdata, RegisterTable* regTable)
if (instr == kPackedSwitchSignature ||
instr == kSparseSwitchSignature ||
instr == kArrayDataSignature ||
- (instr == OP_NOP &&
+ (instr == OP_NOP && (insnIdx + 1 < insnsSize) &&
(meth->insns[insnIdx+1] == kPackedSwitchSignature ||
meth->insns[insnIdx+1] == kSparseSwitchSignature ||
meth->insns[insnIdx+1] == kArrayDataSignature)))