RFR 8051012: Regression in verifier for <init> method call from inside of a branch
harold seigel
harold.seigel at oracle.com
Fri Aug 1 14:31:28 UTC 2014
Hi Lois,
Thanks for the review. I'll run those tests before checking in the fix.
Harold
On 8/1/2014 9:34 AM, Lois Foltan wrote:
> Hi Harold,
> Looks good. It might be good to run JDK lang & util tests on this as
> well?
> Thanks,
> Lois
>
> On 7/24/2014 8:46 AM, harold seigel wrote:
>> Hi,
>>
>> Please review this verifier fix for bug 8051012. The fix has two
>> parts. The first part adds another argument to function
>> match_stackmap() which specifies whether or not the stackmap being
>> matched is for an exception handler. If the targetted stackmap is an
>> exception handler then matches are allowed even if the stackmap flags
>> differ (See JVMS 8 section 4.10.1.4
>> <http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.10.1.4>).
>> An additional argument was needed because the existing stackmap
>> matching code was erroneously allowing flag differences when matching
>> branch target stackmaps for bytecodes such as 'goto'. The additional
>> argument lets the verifier differentiate between exception handler
>> stackmaps and branch stackmaps.
>>
>> The second part of the fix removes the check for branch targets
>> jumping over constructor calls to super() (the furthest_jump code).
>> This fix was intended for security but broke legal programs.
>> Removing the fix allows legal programs to work. The needed security
>> is provided by the above fix for stackmap matching.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8051012
>> Open webrev: http://cr.openjdk.java.net/~hseigel/bug_8051012/
>>
>> The fix was tested with the JCK lang, vm, and api/java_lang tests,
>> the UTE verifier and quick tests, the JTREG hotspot tests, including
>> tests that reproduce the security issue and one for legal programs
>> broken by the 'furthest_jump' code fix.
>>
>> Thanks, Harold
>
More information about the hotspot-runtime-dev
mailing list