http://cr.openjdk.java.net/~vlivanov/8032585/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8032585

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

Thanks!

Best regards,
Vladimir Ivanov

Reply via email to