Add bounds checking to our internal array get/set methods.
Change-Id: Ia570615e6b4ea81d796b6bf720444c62830a4f89
diff --git a/src/jni_internal_test.cc b/src/jni_internal_test.cc
index e5ba913..9394ff6 100644
--- a/src/jni_internal_test.cc
+++ b/src/jni_internal_test.cc
@@ -92,7 +92,8 @@
// TODO: check non-NULL initial elements.
- jclass c = env_->FindClass("[Ljava.lang.String;");
+ jclass c = env_->FindClass("[Ljava/lang/String;");
+ ASSERT_TRUE(c != NULL);
EXPECT_TRUE(env_->NewObjectArray(0, c, NULL) != NULL);
@@ -106,6 +107,18 @@
// TODO: check some non-ASCII strings.
}
+TEST_F(JniInternalTest, SetObjectArrayElement) {
+ jclass c = env_->FindClass("[Ljava/lang/Object;");
+ ASSERT_TRUE(c != NULL);
+
+ jobjectArray array = env_->NewObjectArray(1, c, NULL);
+ EXPECT_TRUE(array != NULL);
+ env_->SetObjectArrayElement(array, 0, c);
+ // TODO: check reading value back
+ // TODO: check IndexOutOfBoundsExceptions thrown for bad indexes.
+ // TODO: check ArrayStoreException thrown for bad types.
+}
+
bool EnsureInvokeStub(Method* method);
byte* AllocateCode(void* code, size_t length) {