RFR (XS) JDK-8041918: BootstrapMethods attribute cannot be empty
Coleen Phillimore
coleen.phillimore at oracle.com
Wed May 14 12:28:39 UTC 2014
Lois,
This is a good change and test.
Thanks!
Coleen
On 5/12/14, 9:03 AM, Lois Foltan wrote:
> Hello,
>
> Please review new updated webrev for this bug that takes into account
> all of Harold's suggested changes, including the test just checking
> for "java.lang.ClassFormatError". After mulling it over a bit, that
> did seem to make sense.
>
> http://cr.openjdk.java.net/~lfoltan/bug_jdk8041918.2/
>
> Thanks,
> Lois
>
>
> On 5/9/2014 10:51 AM, Lois Foltan wrote:
>>
>> On 5/9/2014 10:27 AM, harold seigel wrote:
>>> Hi Lois,
>>>
>>> Could TestEmptyBootstrapMethodsAttr.java, just check for
>>> "java.lang.ClassFormatError"? Then the test would not break if the
>>> rest of the message changed.
>>
>> Hi Harold,
>>
>> Thanks for the review. I can do that, but would prefer not to. It
>> allows the test to verify specifically the boundary condition of an
>> attribute_length of 2. If the message is changed in the future, it
>> would be pretty obvious why the test is failing.
>>
>>>
>>> I think the .jcod files need copyright statements. Also, could you
>>> add a small comment about what each one does.
>>
>> Will do.
>> Lois
>>
>>>
>>> Thanks, Harold
>>>
>>> On 5/9/2014 10:22 AM, Lois Foltan wrote:
>>>> 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