Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 76993 invoked from network); 10 Jan 2007 07:23:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 10 Jan 2007 07:23:48 -0000 Received: (qmail 16028 invoked by uid 500); 10 Jan 2007 07:23:55 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 16008 invoked by uid 500); 10 Jan 2007 07:23:55 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 15999 invoked by uid 99); 10 Jan 2007 07:23:55 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Jan 2007 23:23:55 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Jan 2007 23:23:47 -0800 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 852BE7142CC for ; Tue, 9 Jan 2007 23:23:27 -0800 (PST) Message-ID: <32109387.1168413807526.JavaMail.jira@brutus> Date: Tue, 9 Jan 2007 23:23:27 -0800 (PST) From: "Mikhail Markov (JIRA)" To: commits@harmony.apache.org Subject: [jira] Commented: (HARMONY-2955) [classlib][luni]File.deleteOnExit should implement with doPrivileged In-Reply-To: <15720206.1168359987502.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HARMONY-2955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12463482 ] Mikhail Markov commented on HARMONY-2955: ----------------------------------------- I've further investigated the problem and found that the testcase below produces the output below. It seems that 3 different VMs checks different permissions first: RI: java.security.SecurityPermission getProperty.networkaddress.cache.ttl (fails) DRLVM: java.security.SecurityPermission getProperty.package.access (successfully) IBM VME: java.security.SecurityPermission getProperty.package.access (fails) ------------- output --------------- RI: Checking permission: (java.security.SecurityPermission getProperty.networkaddress.cache.ttl) java.lang.ExceptionInInitializerError at java.lang.System.setSecurityManager0(System.java:275) at java.lang.System.setSecurityManager(System.java:244) at Test.main(Test.java:8) Caused by: java.security.AccessControlException: access denied (java.security.SecurityPermission getProperty.networkaddress.cache.ttl) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264) at java.security.AccessController.checkPermission(AccessController.java:427) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at MySecurityManager.checkPermission(Test.java:24) 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.(InetAddressCachePolicy.java:77) ... 3 more Checking permission: (java.lang.RuntimePermission setSecurityManager) Exception in thread "main" java.lang.NoClassDefFoundError at java.lang.System.setSecurityManager0(System.java:275) at java.lang.System.setSecurityManager(System.java:244) at Test.main(Test.java:12) Harmony with DRLVM: Checking permission: (java.security.SecurityPermission getProperty.package.access) Checking permission: (java.lang.RuntimePermission setSecurityManager) Harmony with IBM VME: (VM crashes with the following output): Checking permission: (java.security.SecurityPermission getProperty.package.access) Exception in thread "main" java.security.AccessControlException: Access denied (java.security.SecurityPermission getProperty.package.access) at java.security.AccessController.checkPermission(AccessController.java:94) at java.lang.SecurityManager.checkPermission(SecurityManager.java:746) at MySecurityManager.checkPermission(Test.java:24) 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:19) 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 MySecurityManager.checkPermission(Test.java:19) at java.lang.System.setSecurityManager(System.java:838) at Test.main(Test.java:12) Checking permission: (java.lang.RuntimePermission modifyThreadGroup) --------- Test.java ------------ import java.security.Permission; public class Test { public static void main(String[] args) { SecurityManager backup = System.getSecurityManager(); try { System.setSecurityManager(new MySecurityManager()); } catch (Throwable t) { t.printStackTrace(); } finally { System.setSecurityManager(backup); } } } class MySecurityManager extends SecurityManager { public void checkPermission(Permission perm) { System.out.println("Checking permission: " + perm); if ("setSecurityManager".equals(perm.getName())) { return; } super.checkPermission(perm); } } ----------------------------- > [classlib][luni]File.deleteOnExit should implement with doPrivileged > -------------------------------------------------------------------- > > Key: HARMONY-2955 > URL: https://issues.apache.org/jira/browse/HARMONY-2955 > Project: Harmony > Issue Type: Bug > Components: Classlib > Reporter: Tony Wu > > As title, following testcase passes on RI whereas throws "AccessControlException:Access denied" on Harmony > public void test() throws IOException { > File dir = File.createTempFile("hytemp", ""); > dir.deleteOnExit(); > SecurityManager backup = System.getSecurityManager(); > try { > System.setSecurityManager(new MySecurityManager()); > } finally { > System.setSecurityManager(backup); > } > } > class MySecurityManager extends SecurityManager { > public void checkPermission(Permission perm) { > if ("setSecurityManager".equals(perm.getName())) { > return; > } > super.checkPermission(perm); > } > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira