< prev index next >
src/share/vm/classfile/classFileParser.cpp
Print this page
rev 11948 : 8148854: Class names "SomeClass" and "LSomeClass;" treated by JVM as an equivalent
Summary: Added default format checking of class names loaded by the app class loader
Reviewed-by: andrew
rev 11952 : Merge jdk8u272-b02
@@ -3715,10 +3715,20 @@
info->static_field_size = static_field_size;
info->nonstatic_field_size = nonstatic_field_size;
info->has_nonstatic_fields = has_nonstatic_fields;
}
+static bool relax_format_check_for(ClassLoaderData* loader_data) {
+ bool trusted = (loader_data->is_the_null_class_loader_data() ||
+ SystemDictionary::is_ext_class_loader(loader_data->class_loader()));
+ bool need_verify =
+ // verifyAll
+ (BytecodeVerificationLocal && BytecodeVerificationRemote) ||
+ // verifyRemote
+ (!BytecodeVerificationLocal && BytecodeVerificationRemote && !trusted);
+ return !need_verify;
+}
instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name,
ClassLoaderData* loader_data,
Handle protection_domain,
KlassHandle host_klass,
@@ -3861,11 +3871,11 @@
_minor_version = minor_version;
// Check if verification needs to be relaxed for this class file
// Do not restrict it to jdk1.0 or jdk1.1 to maintain backward compatibility (4982376)
- _relax_verify = Verifier::relax_verify_for(class_loader());
+ _relax_verify = relax_format_check_for(_loader_data);
// Constant pool
constantPoolHandle cp = parse_constant_pool(CHECK_(nullHandle));
int cp_size = cp->length();
< prev index next >