< prev index next >

src/hotspot/share/prims/jniCheck.cpp

Print this page

        

*** 446,465 **** Method* jniCheck::validate_jmethod_id(JavaThread* thr, jmethodID method_id) { ASSERT_OOPS_ALLOWED; // do the fast jmethodID check first ! Method* moop = Method::checked_resolve_jmethod_id(method_id); ! if (moop == NULL) { ReportJNIFatalError(thr, fatal_wrong_class_or_method); } ! // jmethodIDs are supposed to be weak handles in the class loader data, // but that can be expensive so check it last else if (!Method::is_method_id(method_id)) { ReportJNIFatalError(thr, fatal_non_weak_method); } ! return moop; } oop jniCheck::validate_object(JavaThread* thr, jobject obj) { if (obj == NULL) return NULL; --- 446,465 ---- Method* jniCheck::validate_jmethod_id(JavaThread* thr, jmethodID method_id) { ASSERT_OOPS_ALLOWED; // do the fast jmethodID check first ! Method* m = Method::checked_resolve_jmethod_id(method_id); ! if (m == NULL) { ReportJNIFatalError(thr, fatal_wrong_class_or_method); } ! // jmethodIDs are handles in the class loader data, // but that can be expensive so check it last else if (!Method::is_method_id(method_id)) { ReportJNIFatalError(thr, fatal_non_weak_method); } ! return m; } oop jniCheck::validate_object(JavaThread* thr, jobject obj) { if (obj == NULL) return NULL;
*** 523,537 **** ASSERT_OOPS_ALLOWED; jniCheck::validate_jmethod_id(thr, method_id); jniCheck::validate_object(thr, obj); } ! void jniCheck::validate_call_class(JavaThread* thr, jclass clazz, jmethodID method_id) { ! /* validate the class being passed */ ASSERT_OOPS_ALLOWED; ! jniCheck::validate_jmethod_id(thr, method_id); ! jniCheck::validate_class(thr, clazz, false); } /* * IMPLEMENTATION OF FUNCTIONS IN CHECKED TABLE --- 523,544 ---- ASSERT_OOPS_ALLOWED; jniCheck::validate_jmethod_id(thr, method_id); jniCheck::validate_object(thr, obj); } ! void jniCheck::validate_call_class(JavaThread* thr, jclass clazz, jmethodID method_id, jobject obj) { ASSERT_OOPS_ALLOWED; ! Method* m = jniCheck::validate_jmethod_id(thr, method_id); ! Klass* k = jniCheck::validate_class(thr, clazz, false); ! if (obj != NULL) { ! jniCheck::validate_object(thr, obj); ! } ! ! // Check that method is in the class, must be InstanceKlass ! if (!InstanceKlass::cast(k)->is_subtype_of(m->method_holder())) { ! ReportJNIFatalError(thr, fatal_wrong_class_or_method); ! } } /* * IMPLEMENTATION OF FUNCTIONS IN CHECKED TABLE
*** 593,604 **** jclass cls, jmethodID methodID, jboolean isStatic)) functionEnter(thr); IN_VM( ! jniCheck::validate_class(thr, cls, false); ! jniCheck::validate_jmethod_id(thr, methodID); ) jobject result = UNCHECKED()->ToReflectedMethod(env, cls, methodID, isStatic); functionExit(thr); return result; --- 600,610 ---- jclass cls, jmethodID methodID, jboolean isStatic)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_class(thr, cls, methodID); ) jobject result = UNCHECKED()->ToReflectedMethod(env, cls, methodID, isStatic); functionExit(thr); return result;
*** 850,861 **** jmethodID methodID, ...)) functionEnter(thr); va_list args; IN_VM( ! jniCheck::validate_class(thr, clazz, false); ! jniCheck::validate_jmethod_id(thr, methodID); ) va_start(args, methodID); jobject result = UNCHECKED()->NewObjectV(env,clazz,methodID,args); va_end(args); functionExit(thr); --- 856,866 ---- jmethodID methodID, ...)) functionEnter(thr); va_list args; IN_VM( ! jniCheck::validate_call_class(thr, clazz, methodID); ) va_start(args, methodID); jobject result = UNCHECKED()->NewObjectV(env,clazz,methodID,args); va_end(args); functionExit(thr);
*** 867,878 **** jclass clazz, jmethodID methodID, va_list args)) functionEnter(thr); IN_VM( ! jniCheck::validate_class(thr, clazz, false); ! jniCheck::validate_jmethod_id(thr, methodID); ) jobject result = UNCHECKED()->NewObjectV(env,clazz,methodID,args); functionExit(thr); return result; JNI_END --- 872,882 ---- jclass clazz, jmethodID methodID, va_list args)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_class(thr, clazz, methodID); ) jobject result = UNCHECKED()->NewObjectV(env,clazz,methodID,args); functionExit(thr); return result; JNI_END
*** 882,893 **** jclass clazz, jmethodID methodID, const jvalue *args)) functionEnter(thr); IN_VM( ! jniCheck::validate_class(thr, clazz, false); ! jniCheck::validate_jmethod_id(thr, methodID); ) jobject result = UNCHECKED()->NewObjectA(env,clazz,methodID,args); functionExit(thr); return result; JNI_END --- 886,896 ---- jclass clazz, jmethodID methodID, const jvalue *args)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_class(thr, clazz, methodID); ) jobject result = UNCHECKED()->NewObjectA(env,clazz,methodID,args); functionExit(thr); return result; JNI_END
*** 1047,1058 **** jmethodID methodID, \ ...)) \ functionEnter(thr); \ va_list args; \ IN_VM( \ ! jniCheck::validate_call_object(thr, obj, methodID); \ ! jniCheck::validate_call_class(thr, clazz, methodID); \ ) \ va_start(args,methodID); \ ResultType result = UNCHECKED()->CallNonvirtual##Result##MethodV(env, \ obj, \ clazz, \ --- 1050,1060 ---- jmethodID methodID, \ ...)) \ functionEnter(thr); \ va_list args; \ IN_VM( \ ! jniCheck::validate_call_class(thr, clazz, methodID, obj); \ ) \ va_start(args,methodID); \ ResultType result = UNCHECKED()->CallNonvirtual##Result##MethodV(env, \ obj, \ clazz, \
*** 1070,1081 **** jclass clazz, \ jmethodID methodID, \ va_list args)) \ functionEnter(thr); \ IN_VM( \ ! jniCheck::validate_call_object(thr, obj, methodID); \ ! jniCheck::validate_call_class(thr, clazz, methodID); \ ) \ ResultType result = UNCHECKED()->CallNonvirtual##Result##MethodV(env, \ obj, \ clazz, \ methodID,\ --- 1072,1082 ---- jclass clazz, \ jmethodID methodID, \ va_list args)) \ functionEnter(thr); \ IN_VM( \ ! jniCheck::validate_call_class(thr, clazz, methodID, obj); \ ) \ ResultType result = UNCHECKED()->CallNonvirtual##Result##MethodV(env, \ obj, \ clazz, \ methodID,\
*** 1091,1102 **** jclass clazz, \ jmethodID methodID, \ const jvalue * args)) \ functionEnter(thr); \ IN_VM( \ ! jniCheck::validate_call_object(thr, obj, methodID); \ ! jniCheck::validate_call_class(thr, clazz, methodID); \ ) \ ResultType result = UNCHECKED()->CallNonvirtual##Result##MethodA(env, \ obj, \ clazz, \ methodID,\ --- 1092,1102 ---- jclass clazz, \ jmethodID methodID, \ const jvalue * args)) \ functionEnter(thr); \ IN_VM( \ ! jniCheck::validate_call_class(thr, clazz, methodID, obj); \ ) \ ResultType result = UNCHECKED()->CallNonvirtual##Result##MethodA(env, \ obj, \ clazz, \ methodID,\
*** 1123,1134 **** jmethodID methodID, ...)) functionEnter(thr); va_list args; IN_VM( ! jniCheck::validate_call_object(thr, obj, methodID); ! jniCheck::validate_call_class(thr, clazz, methodID); ) va_start(args,methodID); UNCHECKED()->CallNonvirtualVoidMethodV(env,obj,clazz,methodID,args); va_end(args); thr->set_pending_jni_exception_check("CallNonvirtualVoidMethod"); --- 1123,1133 ---- jmethodID methodID, ...)) functionEnter(thr); va_list args; IN_VM( ! jniCheck::validate_call_class(thr, clazz, methodID, obj); ) va_start(args,methodID); UNCHECKED()->CallNonvirtualVoidMethodV(env,obj,clazz,methodID,args); va_end(args); thr->set_pending_jni_exception_check("CallNonvirtualVoidMethod");
*** 1141,1152 **** jclass clazz, jmethodID methodID, va_list args)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_object(thr, obj, methodID); ! jniCheck::validate_call_class(thr, clazz, methodID); ) UNCHECKED()->CallNonvirtualVoidMethodV(env,obj,clazz,methodID,args); thr->set_pending_jni_exception_check("CallNonvirtualVoidMethodV"); functionExit(thr); JNI_END --- 1140,1150 ---- jclass clazz, jmethodID methodID, va_list args)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_class(thr, clazz, methodID, obj); ) UNCHECKED()->CallNonvirtualVoidMethodV(env,obj,clazz,methodID,args); thr->set_pending_jni_exception_check("CallNonvirtualVoidMethodV"); functionExit(thr); JNI_END
*** 1157,1168 **** jclass clazz, jmethodID methodID, const jvalue * args)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_object(thr, obj, methodID); ! jniCheck::validate_call_class(thr, clazz, methodID); ) UNCHECKED()->CallNonvirtualVoidMethodA(env,obj,clazz,methodID,args); thr->set_pending_jni_exception_check("CallNonvirtualVoidMethodA"); functionExit(thr); JNI_END --- 1155,1165 ---- jclass clazz, jmethodID methodID, const jvalue * args)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_class(thr, clazz, methodID, obj); ) UNCHECKED()->CallNonvirtualVoidMethodA(env,obj,clazz,methodID,args); thr->set_pending_jni_exception_check("CallNonvirtualVoidMethodA"); functionExit(thr); JNI_END
*** 1251,1262 **** jmethodID methodID, \ ...)) \ functionEnter(thr); \ va_list args; \ IN_VM( \ ! jniCheck::validate_jmethod_id(thr, methodID); \ ! jniCheck::validate_class(thr, clazz, false); \ ) \ va_start(args,methodID); \ ReturnType result = UNCHECKED()->CallStatic##Result##MethodV(env, \ clazz, \ methodID, \ --- 1248,1258 ---- jmethodID methodID, \ ...)) \ functionEnter(thr); \ va_list args; \ IN_VM( \ ! jniCheck::validate_call_class(thr, clazz, methodID); \ ) \ va_start(args,methodID); \ ReturnType result = UNCHECKED()->CallStatic##Result##MethodV(env, \ clazz, \ methodID, \
*** 1272,1283 **** jclass clazz, \ jmethodID methodID,\ va_list args)) \ functionEnter(thr); \ IN_VM( \ ! jniCheck::validate_jmethod_id(thr, methodID); \ ! jniCheck::validate_class(thr, clazz, false); \ ) \ ReturnType result = UNCHECKED()->CallStatic##Result##MethodV(env, \ clazz, \ methodID, \ args); \ --- 1268,1278 ---- jclass clazz, \ jmethodID methodID,\ va_list args)) \ functionEnter(thr); \ IN_VM( \ ! jniCheck::validate_call_class(thr, clazz, methodID); \ ) \ ReturnType result = UNCHECKED()->CallStatic##Result##MethodV(env, \ clazz, \ methodID, \ args); \
*** 1291,1302 **** jclass clazz, \ jmethodID methodID, \ const jvalue *args)) \ functionEnter(thr); \ IN_VM( \ ! jniCheck::validate_jmethod_id(thr, methodID); \ ! jniCheck::validate_class(thr, clazz, false); \ ) \ ReturnType result = UNCHECKED()->CallStatic##Result##MethodA(env, \ clazz, \ methodID, \ args); \ --- 1286,1296 ---- jclass clazz, \ jmethodID methodID, \ const jvalue *args)) \ functionEnter(thr); \ IN_VM( \ ! jniCheck::validate_call_class(thr, clazz, methodID); \ ) \ ReturnType result = UNCHECKED()->CallStatic##Result##MethodA(env, \ clazz, \ methodID, \ args); \
*** 1321,1332 **** jmethodID methodID, ...)) functionEnter(thr); va_list args; IN_VM( ! jniCheck::validate_jmethod_id(thr, methodID); ! jniCheck::validate_class(thr, cls, false); ) va_start(args,methodID); UNCHECKED()->CallStaticVoidMethodV(env,cls,methodID,args); va_end(args); thr->set_pending_jni_exception_check("CallStaticVoidMethod"); --- 1315,1325 ---- jmethodID methodID, ...)) functionEnter(thr); va_list args; IN_VM( ! jniCheck::validate_call_class(thr, cls, methodID); ) va_start(args,methodID); UNCHECKED()->CallStaticVoidMethodV(env,cls,methodID,args); va_end(args); thr->set_pending_jni_exception_check("CallStaticVoidMethod");
*** 1338,1349 **** jclass cls, jmethodID methodID, va_list args)) functionEnter(thr); IN_VM( ! jniCheck::validate_jmethod_id(thr, methodID); ! jniCheck::validate_class(thr, cls, false); ) UNCHECKED()->CallStaticVoidMethodV(env,cls,methodID,args); thr->set_pending_jni_exception_check("CallStaticVoidMethodV"); functionExit(thr); JNI_END --- 1331,1341 ---- jclass cls, jmethodID methodID, va_list args)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_class(thr, cls, methodID); ) UNCHECKED()->CallStaticVoidMethodV(env,cls,methodID,args); thr->set_pending_jni_exception_check("CallStaticVoidMethodV"); functionExit(thr); JNI_END
*** 1353,1364 **** jclass cls, jmethodID methodID, const jvalue * args)) functionEnter(thr); IN_VM( ! jniCheck::validate_jmethod_id(thr, methodID); ! jniCheck::validate_class(thr, cls, false); ) UNCHECKED()->CallStaticVoidMethodA(env,cls,methodID,args); thr->set_pending_jni_exception_check("CallStaticVoidMethodA"); functionExit(thr); JNI_END --- 1345,1355 ---- jclass cls, jmethodID methodID, const jvalue * args)) functionEnter(thr); IN_VM( ! jniCheck::validate_call_class(thr, cls, methodID); ) UNCHECKED()->CallStaticVoidMethodA(env,cls,methodID,args); thr->set_pending_jni_exception_check("CallStaticVoidMethodA"); functionExit(thr); JNI_END
< prev index next >