[8] RFR (XS): 8032585: JSR292: IllegalAccessError when attempting to invoke protected method from different package

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Mon Jan 27 16:05:32 UTC 2014


JSR292 access verification logic refuses method handle lookup access to 
methods which are defined on inaccessible classes. This is usually 
correct, but in the corner case of inheritance through a public class, 
it is wrong. 8029507 makes the JVM provide more correct information 
about the defining class of a looked-up method and this corrected 
information is causing the old and wrong checks to fail where they 
didn't fail before.

The fix is to relax the check: don't require the class where protected 
member is declared to be public. It is enough to check that defining 
class is a super class of the class lookup request comes from to ensure 
there are enough privileges to access protected member.

Testing: regression test, enumeration tests on access checks, 
jdk/test/java/lang/invoke, vm.mlvm.testlist


Best regards,
Vladimir Ivanov

More information about the core-libs-dev mailing list