RFR 8058575: IllegalAccessError trying to access package-private class from VM anonymous class
Coleen Phillimore
coleen.phillimore at oracle.com
Fri Aug 12 18:47:21 UTC 2016
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