You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Alexey Varlamov (JIRA)" <ji...@apache.org> on 2006/10/20 13:27:37 UTC

[jira] Updated: (HARMONY-1309) [luni][tests] incorrect test for reflection access control

     [ http://issues.apache.org/jira/browse/HARMONY-1309?page=all ]

Alexey Varlamov updated HARMONY-1309:
-------------------------------------

    Attachment: test-refl-acc.patch

More j9-friendly patch: commented out access check for nested member

> [luni][tests] incorrect test for reflection access control
> ----------------------------------------------------------
>
>                 Key: HARMONY-1309
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1309
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Alexey Varlamov
>            Priority: Minor
>         Attachments: test-refl-acc.patch, test-refl-acc.patch
>
>
> There is a test[1] in classlib, which verifies that reflection access
> from enclosing class to a private member of a nested class results in
> IllegalAccessException.
> However, this is against the language specification (para 6.6.1 of the JLS3):
> "if the member or constructor is declared private, then access is
> permitted if and only if it occurs within the body of the top level class (7.6)
> that encloses the declaration of the member or constructor."
> Moreover, the following test reveals inconsistency between standard
> access control and reflective one:
> ---------------------------------
> class NestedAccessTest {
> static class A {
>        private static int x = 123;
> }
> public static void main(String... s) throws Throwable{
>        System.out.println(A.x);
>        System.out.println(A.class.getDeclaredField("x").get(null));
> }
> }
> --------------------------------
> >java -showversion NestedAccessTest
> java version "1.5.0_06"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> 123
> Exception in thread "main" java.lang.IllegalAccessException: Class
> NestedAccessTest can not access a member of class NestedAccessTest$A
> with modifiers "private static"
>        at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
>        at java.lang.reflect.Field.doSecurityCheck(Field.java:954)
>        at java.lang.reflect.Field.getFieldAccessor(Field.java:895)
>        at java.lang.reflect.Field.get(Field.java:357)
>        at NestedAccessTest.main(NestedAccessTest.java:7)
> ----------------------------------
> Besides, this is an acknowledged bug of RI [2], and is ranked TOP#6.
> [1]<testcase classname="tests.api.java.lang.reflect.FieldTest"
> name="test_getLjava_lang_Object"/>
> [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4071957

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira