Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/java.base/share/native/libjava/Class.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ Java_java_lang_Class_registerNatives(JNIEnv *env, jclass cls)
sizeof(methods)/sizeof(JNINativeMethod));
}

#define JAVA_CLASSNAME_MAX_LEN 65535

JNIEXPORT jclass JNICALL
Java_java_lang_Class_forName0(JNIEnv *env, jclass this, jstring classname,
jboolean initialize, jobject loader, jclass caller)
Expand All @@ -109,6 +111,12 @@ Java_java_lang_Class_forName0(JNIEnv *env, jclass this, jstring classname,
}

len = (*env)->GetStringUTFLength(env, classname);
if (len > JAVA_CLASSNAME_MAX_LEN) {
char msg[128];
snprintf(msg, sizeof(msg), "Class name exceeds maximum length of %d", JAVA_CLASSNAME_MAX_LEN);
JNU_ThrowClassNotFoundException(env, msg);
return 0;
}
unicode_len = (*env)->GetStringLength(env, classname);
if (len >= (jsize)sizeof(buf)) {
clname = malloc(len + 1);
Expand Down