RFR (S) 7127066: Class verifier accepts an invalid class file

harold seigel harold.seigel at oracle.com
Fri Aug 29 13:41:39 UTC 2014


Hi Keith,

Thanks for the review.  I will see what I can do about opening up bugs 
whose fixes get sent out for public review.

Harold

On 8/29/2014 9:32 AM, Keith McGuigan wrote:
> Hi Harold,
>
> Thanks for the background.  The code does look good to me given that 
> explanation.  In the future if we can keep JIRA records "open" as much 
> as possible it will make future open collaboration easier.
>
>
> On Fri, Aug 29, 2014 at 8:41 AM, harold seigel 
> <harold.seigel at oracle.com <mailto:harold.seigel at oracle.com>> wrote:
>
>     Hi,
>
>     Resending this RFR with a description of the bug because the bug
>     is not accessible to all reviewers.
>
>     The bug is that the verifier accepts a class that it should not.
>     Verification should fail because, in this case, the stack map at a
>     TRY block's astore_2 instruction does have enough locals to
>     satisfy the stack map for one of its covering exception handlers. 
>     However, the HotSpot VM class verifier does not detect the
>     problem, and loads the class.
>
>     The root cause of this issue is that the verifier is using the
>     result type state from the astore_2 instruction, instead of
>     correctly using the incoming type state, when checking for a
>     compatible type-state for the exception handler. This is
>     not-to-spec, as JVMS 8 does indicate that the instruction's
>     incoming type state (with expression stack modification) should be
>     used for type checking the covering exception handlers.
>
>     I hope this compensates for the inaccessibility of the bug.
>
>     Thanks, Harold
>
>
>     On 8/28/2014 5:07 PM, harold seigel wrote:
>
>         Hi,
>
>         Please review this small verifier fix for bug JDK-7127066. 
>         The change fixes the problem by doing the exception handler
>         type state verification for byetcodes, such as astore, that
>         modify the type state, before the type state gets modified.
>
>         bug: https://bugs.openjdk.java.net/browse/JDK-7127066
>         Open webrev: http://cr.openjdk.java.net/~hseigel/bug_7127066/
>         <http://cr.openjdk.java.net/%7Ehseigel/bug_7127066/>
>
>         The fix was tested with JCK lang, vm, and api/java_lang tests,
>         ute quick tests, ute split_verifier tests, hotspot JTREG
>         tests, and the test case provided in the bug.
>
>         Thanks, Harold
>
>
>
>
>
> -- 
>
> twitter-icon-large.png
>
> 	
>
> Keith McGuigan
>
> @kamggg
>
> kmcguigan at twitter.com <mailto:kmcguigan at twitter.com>
>



More information about the hotspot-runtime-dev mailing list