[kaffe] Should IllegalAccessException be thrown or not?
Ito Kazumitsu
kaz at maczuka.gcd.org
Sun Dec 11 18:35:59 PST 2005
From: Ito Kazumitsu <kaz at maczuka.gcd.org>
Date: Sun, 11 Dec 2005 10:51:52 +0900 (JST)
> The next test case will illustrate this problem more clearly.
>
> $ cat A.java
> public class A {
> public static void main(String[] args) {
> try {
> B.getPrivateClass().newInstance();
> }
> catch (Exception e) {
> e.printStackTrace();
> }
> }
>
> }
> $ cat B.java
> public class B {
> private static class PrivateClass {}
> public static Class getPrivateClass() { return PrivateClass.class; }
> }
>
> In this case, Sun's JDK throws IllegalAccessException as expected.
> But Kaffe does not.
kaffe/kaffevm/access.c has this code:
261 else if( same_package && !(target_flags & ACC_PRIVATE) )
262 {
263 /* Package. */
264 slot_acc = 1;
265 }
I am afraid this makes anything private in the target class T
accessible to the caller C if T and C are in the same package
and T is accessible to C.
More information about the kaffe
mailing list