RFR 8079784: Unexpected IllegalAccessError when trying access InnerClasses attribute (original) (raw)

Harold David Seigel harold.seigel at oracle.com
Wed Oct 10 11:48:53 UTC 2018


Hi David,

Thanks for the review!

Please see comments inline.

On 10/9/2018 9:35 PM, David Holmes wrote:

Hi Harold,

Looks fine as-is I have one query below ... One additional nit in jasm file - this purported line of source code is not correct:  60 //         Class<?> clazz = Buggered.Foo.class; as you aren't using that class. The test program was originally called Buggered.  I changed the name when creating the JTReg test but forgot to update the comment.  I'll fix it before pushing. On 10/10/2018 12:12 AM, Harold David Seigel wrote: Hi,

Please review this fix, proposed by Doug Simon, for JDK-8079784. The fix prevents classes in the InnerClasses attribute from being loaded unless they are actually being accessed. That in itself seems reasonable. I'm surprised we don't do more sanity checking on the classes listed in the inner classes attribute - I would have expected at least a "same package" check. Looking at the code itself: if (innerismember && ioff != 0 && ooff != 0) { +       if (cp->klassnameatmatches(outer, ooff) && +           cp->klassnameatmatches(inner, ioff)) { Klass* o = cp->klassat(ooff, CHECK); if (o == outer) { Klass* i = cp->klassat(ioff, CHECK); if (i == inner) { return; } } } +     } I'm wondering how it is possible to have the names match and yet potentially o!=outer and i!=inner ? Just guessing here but klass_at() resolves the class. So potentially it could resolve to a different class with the same name. Also, while looking into this issue, I noticed that method issamepackagemember() is not used.  So, I removed it as part of this webrev. In 8u it's called by Reflection::issamepackagemember, which in turn is unused. That was removed in 9 by the cleanup done in JDK-8140485. :) Hopefully, it's gone for good now.

Thanks! Harold

Thanks, David

Open Webrev: http://cr.openjdk.java.net/~hseigel/bug8079784/webrev/ JBS Bug:  https://bugs.openjdk.java.net/browse/JDK-8079784 The fix was tested with the test in the webrev and by running Mach5 tiers 1 and 2 tests and builds on Linux-x64, Windows, and Mac OS X, running tiers 3-5 tests on Linux-x64, and by running JCK-12 Lang and VM tests on Linux-x64. Thanks, Harold



More information about the hotspot-runtime-dev mailing list