harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Varlamov (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-1309) [luni][tests] incorrect test for reflection access control
Date Tue, 29 Aug 2006 10:08:30 GMT
[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


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

        

Mime
View raw message