< prev index next >
test/hotspot/jtreg/vmTestbase/vm/mlvm/share/mlvmJvmtiUtils.cpp
Print this page
@@ -46,33 +46,41 @@
pEnv->ReleaseStringUTFChars(src, pStr);
}
struct MethodName * getMethodName(jvmtiEnv * pJvmtiEnv, jmethodID method) {
- char * szName;
- char * szSignature;
+ char * szName = NULL;
+ char * szSignature = NULL;
jclass clazz;
- struct MethodName * mn;
+ struct MethodName * mn = NULL;
if (!NSK_JVMTI_VERIFY(pJvmtiEnv->GetMethodName(method, &szName, NULL, NULL))) {
- return NULL;
+ goto out;
}
if (!NSK_JVMTI_VERIFY(pJvmtiEnv->GetMethodDeclaringClass(method, &clazz))) {
- NSK_JVMTI_VERIFY(pJvmtiEnv->Deallocate((unsigned char*) szName));
- return NULL;
+ goto out;
}
if (!NSK_JVMTI_VERIFY(pJvmtiEnv->GetClassSignature(clazz, &szSignature, NULL))) {
- NSK_JVMTI_VERIFY(pJvmtiEnv->Deallocate((unsigned char*) szName));
- return NULL;
+ goto out;
+ }
+
+ if (strlen(szName) + 1 > sizeof(mn->methodName) ||
+ strlen(szSignature) + 1 > sizeof(mn->classSig)) {
+ goto out;
}
mn = (MethodName*) malloc(sizeof(MethodNameStruct));
+ if (mn == NULL) {
+ goto out;
+ }
+
strncpy(mn->methodName, szName, sizeof(mn->methodName));
strncpy(mn->classSig, szSignature, sizeof(mn->classSig));
+ out:
NSK_JVMTI_VERIFY(pJvmtiEnv->Deallocate((unsigned char*) szName));
NSK_JVMTI_VERIFY(pJvmtiEnv->Deallocate((unsigned char*) szSignature));
return mn;
}
< prev index next >