< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

        

*** 2326,2337 **** } void InstanceKlass::set_package(ClassLoaderData* loader_data, TRAPS) { // ensure java/ packages only loaded by boot or platform builtin loaders ! Handle class_loader(THREAD, loader_data->class_loader()); ! check_prohibited_package(name(), class_loader, CHECK); TempNewSymbol pkg_name = package_from_name(name(), CHECK); if (pkg_name != NULL && loader_data != NULL) { --- 2326,2336 ---- } void InstanceKlass::set_package(ClassLoaderData* loader_data, TRAPS) { // ensure java/ packages only loaded by boot or platform builtin loaders ! check_prohibited_package(name(), loader_data, CHECK); TempNewSymbol pkg_name = package_from_name(name(), CHECK); if (pkg_name != NULL && loader_data != NULL) {
*** 2357,2383 **** loader_data->unnamed_module()); } // A package should have been successfully created assert(_package_entry != NULL, "Package entry for class %s not found, loader %s", ! name()->as_C_string(), loader_data->loader_name()); } if (log_is_enabled(Debug, module)) { ResourceMark rm; ModuleEntry* m = _package_entry->module(); log_trace(module)("Setting package: class: %s, package: %s, loader: %s, module: %s", external_name(), pkg_name->as_C_string(), ! loader_data->loader_name(), (m->is_named() ? m->name()->as_C_string() : UNNAMED_MODULE)); } } else { ResourceMark rm; log_trace(module)("Setting package: class: %s, package: unnamed, loader: %s, module: %s", external_name(), ! (loader_data != NULL) ? loader_data->loader_name() : "NULL", UNNAMED_MODULE); } } --- 2356,2382 ---- loader_data->unnamed_module()); } // A package should have been successfully created assert(_package_entry != NULL, "Package entry for class %s not found, loader %s", ! name()->as_C_string(), loader_data->loader_name_and_id()); } if (log_is_enabled(Debug, module)) { ResourceMark rm; ModuleEntry* m = _package_entry->module(); log_trace(module)("Setting package: class: %s, package: %s, loader: %s, module: %s", external_name(), pkg_name->as_C_string(), ! loader_data->loader_name_and_id(), (m->is_named() ? m->name()->as_C_string() : UNNAMED_MODULE)); } } else { ResourceMark rm; log_trace(module)("Setting package: class: %s, package: unnamed, loader: %s, module: %s", external_name(), ! (loader_data != NULL) ? loader_data->loader_name_and_id() : "NULL", UNNAMED_MODULE); } }
*** 2469,2490 **** return(is_same_class_package(targetclassloader(), targetclassname)); } // Only boot and platform class loaders can define classes in "java/" packages. void InstanceKlass::check_prohibited_package(Symbol* class_name, ! Handle class_loader, TRAPS) { ! if (!class_loader.is_null() && ! !SystemDictionary::is_platform_class_loader(class_loader()) && class_name != NULL) { ResourceMark rm(THREAD); char* name = class_name->as_C_string(); if (strncmp(name, JAVAPKG, JAVAPKG_LEN) == 0 && name[JAVAPKG_LEN] == '/') { TempNewSymbol pkg_name = InstanceKlass::package_from_name(class_name, CHECK); assert(pkg_name != NULL, "Error in parsing package name starting with 'java/'"); name = pkg_name->as_C_string(); ! const char* class_loader_name = SystemDictionary::loader_name(class_loader()); StringUtils::replace_no_expand(name, "/", "."); const char* msg_text1 = "Class loader (instance of): "; const char* msg_text2 = " tried to load prohibited package name: "; size_t len = strlen(msg_text1) + strlen(class_loader_name) + strlen(msg_text2) + strlen(name) + 1; char* message = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, len); --- 2468,2489 ---- return(is_same_class_package(targetclassloader(), targetclassname)); } // Only boot and platform class loaders can define classes in "java/" packages. void InstanceKlass::check_prohibited_package(Symbol* class_name, ! ClassLoaderData* loader_data, TRAPS) { ! if (!loader_data->is_boot_class_loader_data() && ! !loader_data->is_platform_class_loader_data() && class_name != NULL) { ResourceMark rm(THREAD); char* name = class_name->as_C_string(); if (strncmp(name, JAVAPKG, JAVAPKG_LEN) == 0 && name[JAVAPKG_LEN] == '/') { TempNewSymbol pkg_name = InstanceKlass::package_from_name(class_name, CHECK); assert(pkg_name != NULL, "Error in parsing package name starting with 'java/'"); name = pkg_name->as_C_string(); ! const char* class_loader_name = loader_data->loader_name_and_id(); StringUtils::replace_no_expand(name, "/", "."); const char* msg_text1 = "Class loader (instance of): "; const char* msg_text2 = " tried to load prohibited package name: "; size_t len = strlen(msg_text1) + strlen(class_loader_name) + strlen(msg_text2) + strlen(name) + 1; char* message = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, len);
< prev index next >