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"; |