RFR (XS) JDK-8041918: BootstrapMethods attribute cannot be empty
Lois Foltan
lois.foltan at oracle.com
Fri May 9 14:22:13 UTC 2014
Hello,
Please review the following fix:
Webrev:
http://cr.openjdk.java.net/~lfoltan/bug_jdk8041918/
Bug: BootstrapMethods attribute cannot be empty
https://bugs.openjdk.java.net/browse/JDK-8041918
Summary of fix:
JVMS 8, section 4.7.23 details the BootstrapMethods attribute. In
particular, page 155, describes the "attribute length" field of a
BootstrapMethods attribute by documenting, "the value of the
attribute_length item indicates the length of the attribute, excluding
the initial six bytes." Thus, a valid BootstrapMethod attribute could
have an empty bootstrap_methods table where the num_bootstrap_methods
field is equal to zero. This situation would set the attribute_length
legitimately to 2. The class format check within
ClassFileParser::parse_classfile_bootstrap_methods_attribte() must check
for attribute_byte_length to be greater than or equal to the sizeof(u2).
This check was added post JDK 8, an empty bootstrap_methods table was
accepted by JDK 8 without generating a ClassFormatError. Thank you to
Harold Seigel for helping to figure out the .jcod files to yield a
reproducer for this bug.
Tests:
Hotspot's jtreg tests, JCK lang & vm, JDK lang & util,
vm.quick.testlist
Thank you,
Lois
More information about the hotspot-runtime-dev
mailing list