src/share/vm/classfile/systemDictionary.cpp

changeset 8621
4eba7ec59722
parent 8497
50e62b688ddc
child 8856
ac27a9c85bea
child 9099
08326a76b148
equal deleted inserted replaced
8618:90faa4a4b09f 8621:4eba7ec59722
1082 parsed_name, 1082 parsed_name,
1083 verify, 1083 verify,
1084 THREAD); 1084 THREAD);
1085 1085
1086 const char* pkg = "java/"; 1086 const char* pkg = "java/";
1087 size_t pkglen = strlen(pkg);
1087 if (!HAS_PENDING_EXCEPTION && 1088 if (!HAS_PENDING_EXCEPTION &&
1088 !class_loader.is_null() && 1089 !class_loader.is_null() &&
1089 parsed_name != NULL && 1090 parsed_name != NULL &&
1090 !strncmp((const char*)parsed_name->bytes(), pkg, strlen(pkg))) { 1091 parsed_name->utf8_length() >= (int)pkglen &&
1092 !strncmp((const char*)parsed_name->bytes(), pkg, pkglen)) {
1091 // It is illegal to define classes in the "java." package from 1093 // It is illegal to define classes in the "java." package from
1092 // JVM_DefineClass or jni_DefineClass unless you're the bootclassloader 1094 // JVM_DefineClass or jni_DefineClass unless you're the bootclassloader
1093 ResourceMark rm(THREAD); 1095 ResourceMark rm(THREAD);
1094 char* name = parsed_name->as_C_string(); 1096 char* name = parsed_name->as_C_string();
1095 char* index = strrchr(name, '/'); 1097 char* index = strrchr(name, '/');
1098 assert(index != NULL, "must be");
1096 *index = '\0'; // chop to just the package name 1099 *index = '\0'; // chop to just the package name
1097 while ((index = strchr(name, '/')) != NULL) { 1100 while ((index = strchr(name, '/')) != NULL) {
1098 *index = '.'; // replace '/' with '.' in package name 1101 *index = '.'; // replace '/' with '.' in package name
1099 } 1102 }
1100 const char* fmt = "Prohibited package name: %s"; 1103 const char* fmt = "Prohibited package name: %s";

mercurial