summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/verifier/method_verifier.cc4
-rw-r--r--tools/fuzzer/class-verifier-corpus/b360767178.dexbin0 -> 2400 bytes
2 files changed, 4 insertions, 0 deletions
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc
index 383785387a..fccb60b3e6 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -4311,6 +4311,10 @@ void MethodVerifier<kVerifierDebug>::VerifyNewArray(const Instruction* inst,
for (size_t ui = 0; ui < arg_count; ui++) {
uint32_t get_reg = is_range ? inst->VRegC_3rc() + ui : arg[ui];
work_line_->VerifyRegisterType(this, get_reg, expected_type);
+ if (flags_.have_pending_hard_failure_) {
+ // Don't continue on hard failures.
+ return;
+ }
}
// filled-array result goes into "result" register
const RegType& precise_type = reg_types_.FromUninitialized(res_type);
diff --git a/tools/fuzzer/class-verifier-corpus/b360767178.dex b/tools/fuzzer/class-verifier-corpus/b360767178.dex
new file mode 100644
index 0000000000..29f02a7d5f
--- /dev/null
+++ b/tools/fuzzer/class-verifier-corpus/b360767178.dex
Binary files differ