summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2014-08-22 20:34:16 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2014-08-22 20:34:16 +0000
commit1dbc3a918612e9ce01f8b05b5ef5f4cbb34e74d0 (patch)
tree8c222c9f85ac9f14a14997fbbf5522f383096c6d
parent19c62d5e819519932aa7dff87a52f77815c64e65 (diff)
parent695c5982eeddee18c643cc2f94c9d78fa75599ab (diff)
Merge "ART: Reject field accesses to non-reference vregs."
-rw-r--r--runtime/verifier/method_verifier.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc
index e2a3335a79..60194532a6 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -3652,6 +3652,11 @@ mirror::ArtField* MethodVerifier::GetInstanceField(RegType& obj_type, int field_
} else if (obj_type.IsZero()) {
// Cannot infer and check type, however, access will cause null pointer exception
return field;
+ } else if (!obj_type.IsReferenceTypes()) {
+ // Trying to read a field from something that isn't a reference
+ Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "instance field access on object that has "
+ << "non-reference type " << obj_type;
+ return NULL;
} else {
mirror::Class* klass = field->GetDeclaringClass();
RegType& field_klass =