Chris, John, thank you for reviewing the fix. I'll proceed with choice #1 then. Filed a bug [1] to track cleanup activities.
Best regards, Vladimir Ivanov [1] https://bugs.openjdk.java.net/browse/JDK-8032881 On 1/28/14 4:50 AM, John Rose wrote: > This is safe as a point fix, since (a) Lookup.checkSymbolicClass vets 'refc' > before checkMemberAccess is called, and (b) the JVMS does not in fact call > for 'defc' to also be accessible, if it is inherited via 'refc'. > > There is a slightly different problem here, a code cleanup problem. The > javadoc for checkMemberAccess does not seem to accurately reflect what the > method does or how it works. We need to re-align the javadoc, the JVM spec., > and (if necessary) the code. For example, I would prefer either an explicit > call from checkMemberAccess to isClassAccessible, or at least have an assert > in there. This will take a little more time and care to do right. > > I see two choices; either are OK with me as a reviewer: > 1. Do the point fix as proposed and file a followup bug. > 2. Fix the javadoc, add the assert, and re-review correspondence between > checkMemberAccess (javadoc+code) and the JVM spec. for member access. > > — John > > On Jan 27, 2014, at 8:05 AM, Vladimir Ivanov <vladimir.x.iva...@oracle.com> > wrote: > >> 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 >> _______________________________________________ >> mlvm-dev mailing list >> mlvm-dev@openjdk.java.net >> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev