comparison src/share/vm/prims/jni.cpp @ 1989:017cd8bce8a8

6539281: -Xcheck:jni should validate char* argument to ReleaseStringUTFChars Summary: Tag allocated memory with a magic value and verify when releasing. Reviewed-by: phh, stefank
author sla
date Tue, 07 Dec 2010 03:15:45 -0800
parents 828eafbd85cc
children 06f017f7daa7 3582bf76420e
comparison
equal deleted inserted replaced
1988:684faacebf20 1989:017cd8bce8a8
2111 2111
2112 2112
2113 JNI_ENTRY(const char*, jni_GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy)) 2113 JNI_ENTRY(const char*, jni_GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy))
2114 JNIWrapper("GetStringUTFChars"); 2114 JNIWrapper("GetStringUTFChars");
2115 DTRACE_PROBE3(hotspot_jni, GetStringUTFChars__entry, env, string, isCopy); 2115 DTRACE_PROBE3(hotspot_jni, GetStringUTFChars__entry, env, string, isCopy);
2116 ResourceMark rm; 2116 oop java_string = JNIHandles::resolve_non_null(string);
2117 char* str = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(string)); 2117 size_t length = java_lang_String::utf8_length(java_string);
2118 int length = (int)strlen(str); 2118 char* result = AllocateHeap(length + 1, "GetStringUTFChars");
2119 char* result = AllocateHeap(length+1, "GetStringUTFChars"); 2119 java_lang_String::as_utf8_string(java_string, result, (int) length + 1);
2120 strcpy(result, str);
2121 if (isCopy != NULL) *isCopy = JNI_TRUE; 2120 if (isCopy != NULL) *isCopy = JNI_TRUE;
2122 DTRACE_PROBE1(hotspot_jni, GetStringUTFChars__return, result); 2121 DTRACE_PROBE1(hotspot_jni, GetStringUTFChars__return, result);
2123 return result; 2122 return result;
2124 JNI_END 2123 JNI_END
2125 2124