> I could suggest opening at least 2 JIRAs:
1) "non-bug diff" as this code should silently work
Seems like we've already have this one: https://issues.apache.org/jira/browse/HARMONY-2461
Regards, Mikhail On 1/10/07, Mikhail Markov <[EMAIL PROTECTED]> wrote:
Hi! While investigating https://issues.apache.org/jira/browse/HARMONY-2955 JIRA i've found an interesting thing: The testcase below produces different result for 3 VMs (below as well) and all 3 are rather weird: RI: - need access to some security properties when calling System.setSecurityManager for the first time - seems violation of the spec to me. - but if uncomment the line #5 (and thus some static initializers will be done) then the output is just "Security manager was successfully set." DRLVM: - checking java.security.SecurityPermission getProperty.package.accessand althought it's not granted - successfully sets security manager (probably by catching exception inside VM kernel classes) IBM VME: - checking the same java.security.SecurityPermission getProperty.package.access and crashes as it's not granted From these 3 results DRLVM seems to me the closest to what is expected. I'm not sure what kinds of JIRAs should be open in this case: I could suggest opening at least 2 JIRAs: 1) "non-bug diff" as this code should silently work 2) against IBM VME - as it crashes while checking additional properties Not sure what to do with DRLVM as it's behaviour generally correct. Thoughts? Regards, Mikhail -------- output -------------- RI: Checking (java.security.SecurityPermission getProperty.networkaddress.cache.ttl)... Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.System.setSecurityManager0(System.java :275) at java.lang.System.setSecurityManager(System.java:244) at Test.main(Test.java:6) Caused by: java.lang.SecurityException: (java.security.SecurityPermission getProperty.networkaddress.cache.ttl ) is not granted. at MySecurityManager.checkPermission(Test.java:14) at java.security.Security.getProperty(Security.java:724) at sun.net.InetAddressCachePolicy$1.run( InetAddressCachePolicy.java :81) at java.security.AccessController.doPrivileged(Native Method) at sun.net.InetAddressCachePolicy.<clinit>( InetAddressCachePolicy.java:77) ... 3 more DRLVM: Checking (java.security.SecurityPermission getProperty.package.access)... Security manager was successfully set. Checking (java.lang.RuntimePermission getProtectionDomain)... IBM VME (crashes): Checking (java.security.SecurityPermission getProperty.package.access)... Exception in thread "main" java.lang.SecurityException: ( java.security.SecurityPermission getProperty.package.access) is not granted. at MySecurityManager.checkPermission(Test.java:14) at java.lang.SecurityManager.checkSecurityAccess( SecurityManager.java:422) at java.security.Security.getProperty(Security.java:360) at org.apache.harmony.luni.util.PriviAction.run(PriviAction.java :131) at java.security.AccessController.doPrivileged( AccessController.java:179) at java.lang.SecurityManager.checkPackageProperty( SecurityManager.java :333) at java.lang.SecurityManager.checkPackageAccess( SecurityManager.java:34) at com.ibm.oti.vm.URLSystemClassLoader.loadClass( URLSystemClassLoader.java:54) at java.lang.ClassLoader.loadClass (ClassLoader.java:620) at com.ibm.oti.vm.URLSystemClassLoader.loadClass( URLSystemClassLoader.java:60) at java.lang.ClassLoader.loadClass(ClassLoader.java:594) at MySecurityManager.checkPermission (Test.java:13) at java.lang.SecurityManager.checkSecurityAccess( SecurityManager.java:422) at java.security.Security.getProperty(Security.java:360) at org.apache.harmony.luni.util.PriviAction.run (PriviAction.java :131) at java.security.AccessController.doPrivileged( AccessController.java:179) at java.lang.SecurityManager.checkPackageProperty( SecurityManager.java:333) at java.lang.SecurityManager.checkPackageAccess ( SecurityManager.java:34) at com.ibm.oti.vm.URLSystemClassLoader.loadClass( URLSystemClassLoader.java:54) at java.lang.ClassLoader.loadClass(ClassLoader.java:594) at Test.main(Test.java:7) Checking (java.lang.RuntimePermission modifyThreadGroup)... -------- Test.java ----------- import java.security.Permission; public class Test { public static void main(String[] args) throws Exception { //System.setSecurityManager(null); System.setSecurityManager(new MySecurityManager()); System.out.println("Security manager was successfully set."); } } class MySecurityManager extends SecurityManager { public void checkPermission(Permission perm) { System.out.println("Checking " + perm + "..."); throw new SecurityException(perm.toString () + " is not granted."); } }
