RFR 8058575: IllegalAccessError trying to access package-private class from VM anonymous class

harold seigel harold.seigel at oracle.com
Fri Aug 12 20:07:59 UTC 2016


Thanks Coleen.  I'll look into this and get back to you.

Harold


On 8/12/2016 2:47 PM, Coleen Phillimore wrote:
>
> http://cr.openjdk.java.net/~hseigel/bug_8058575.hs/src/share/vm/classfile/classFileParser.cpp.udiff.html 
>
>
> *+ const Klass* host_klass;*
> *+ if (_host_klass->is_objArray_klass()) {*
> *+ host_klass = ObjArrayKlass::cast(_host_klass)->element_klass();*
> *+ } else {*
> *+ host_klass = _host_klass;*
> *+ }*
> *+ assert(host_klass->is_instance_klass(), "host klass is not an 
> instance class");*
>
>
> Can host_class really be an array class or is this code trying to be 
> defensive since host_class is Klass* and not InstanceKlass?  If it can 
> be an objArray class,then I think you want bottom_klass() not 
> element_klass(),  but if it can also be a typeArrayKlass, or [[I 
> objArrayKlass, then you don't have any sort of InstanceKlass.   It 
> seems like the check for what sort of Klass host_class can be should 
> be further up the stack and the more specific type passed here.  I 
> don't see such a check though.  This doesn't seem right.
>
> Apart from this, everything else looks great.  I even reviewed your test.
>
> Thanks,
> Coleen
>
> On 8/3/16 8:15 AM, harold seigel wrote:
>> Hi,
>>
>> Please review this fix for bug 8058575.  The fix prevents a class 
>> created using Unsafe.defineAnonymousClass() from being in a different 
>> package than its host class.  Being in different packages would 
>> create access problems if the packages were in different modules.
>>
>> With this fix, If the anonymous class is in a different package then 
>> the JVM will throw IllegalArgumentException.  If the anonymous class 
>> is in the unnamed package then the JVM will move the anonymous class 
>> into its host class's package.
>>
>> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8058575
>>
>> Open webrevs:
>>
>>    http://cr.openjdk.java.net/~hseigel/bug_8058575.hs/
>>
>>    http://cr.openjdk.java.net/~hseigel/bug_8058575.jdk/
>>
>> The fix was tested with the JCK Lang and VM tests, the hotpot, and 
>> java/lang, java/util and other JTreg tests, the NSK quick tests, and 
>> with the RBT runtime nightly tests.
>>
>> Thanks, Harold
>>
>



More information about the hotspot-runtime-dev mailing list