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

Reply via email to