Spot NULL jobjects passed to MonitorEnter/MonitorExit.
(Rather than aborting inside the monitor implementation.)
Change-Id: I1dd30726c56d9d5707616f1c998ab2bff170a649
diff --git a/src/jni_internal_test.cc b/src/jni_internal_test.cc
index 97cd969..d492deb 100644
--- a/src/jni_internal_test.cc
+++ b/src/jni_internal_test.cc
@@ -1505,6 +1505,14 @@
thrown_exception = env_->ExceptionOccurred();
env_->ExceptionClear();
EXPECT_TRUE(env_->IsInstanceOf(thrown_exception, imse_class));
+
+ // It's an error to call MonitorEnter or MonitorExit on NULL.
+ vm_->check_jni_abort_hook = TestCheckJniAbortHook;
+ env_->MonitorEnter(NULL);
+ EXPECT_TRUE(gCheckJniAbortMessage.find("in call to MonitorEnter") != std::string::npos);
+ env_->MonitorExit(NULL);
+ EXPECT_TRUE(gCheckJniAbortMessage.find("in call to MonitorExit") != std::string::npos);
+ vm_->check_jni_abort_hook = NULL;
}
} // namespace art