Return-Path: Delivered-To: apmail-incubator-harmony-commits-archive@www.apache.org Received: (qmail 87335 invoked from network); 21 Aug 2006 16:09:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 21 Aug 2006 16:09:18 -0000 Received: (qmail 685 invoked by uid 500); 21 Aug 2006 16:09:18 -0000 Delivered-To: apmail-incubator-harmony-commits-archive@incubator.apache.org Received: (qmail 661 invoked by uid 500); 21 Aug 2006 16:09:18 -0000 Mailing-List: contact harmony-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: harmony-dev@incubator.apache.org Delivered-To: mailing list harmony-commits@incubator.apache.org Received: (qmail 623 invoked by uid 99); 21 Aug 2006 16:09:18 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 21 Aug 2006 09:09:18 -0700 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [209.237.227.198] (HELO brutus.apache.org) (209.237.227.198) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 21 Aug 2006 09:09:17 -0700 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id D92B77142E4 for ; Mon, 21 Aug 2006 16:06:13 +0000 (GMT) Message-ID: <17896779.1156176373886.JavaMail.jira@brutus> Date: Mon, 21 Aug 2006 09:06:13 -0700 (PDT) From: "Anton Luht (JIRA)" To: harmony-commits@incubator.apache.org Subject: [jira] Created: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N ClassLoader incorrectly handles AccessControlException ------------------------------------------------------ Key: HARMONY-1245 URL: http://issues.apache.org/jira/browse/HARMONY-1245 Project: Harmony Issue Type: Bug Components: App-Oriented Bug Reports, Classlib Environment: Windows XP professional Reporter: Anton Luht Attachments: Test.jar Harmony: DRLVM + classlib java version "1.5.0" pre-alpha : not complete or compatible svn = r433212, (Aug 21 2006), Windows/ia32/msvc 1310, debug build Problem: if classloader tries to find a class in one of paths in its classpath and comes across security exception - no further lookup is made and application just crashes. The code to reproduce uses code from MX4j unit test 'test.javax.management.LocalSecurityManagerTest' . Code: import java.io.*; import java.security.*; import java.util.*; class Test2 { } public class Test { static { Policy.setPolicy(new LocalModifiablePolicy()); System.setSecurityManager(new SecurityManager()); } public static void main (String[] args) throws Exception { Class.forName("Test2"); } public static class LocalModifiablePolicy extends Policy { private final ProtectionDomain testDomain; private final Map permissionsMap = new HashMap(); public LocalModifiablePolicy() { testDomain = LocalModifiablePolicy.class.getProtectionDomain(); CodeSource cs = Test.class.getProtectionDomain().getCodeSource(); permissionsMap.put(cs, createAllPermissions()); initialize(); } private Permissions createAllPermissions() { Permissions allPermissions = new Permissions(); allPermissions.add(new AllPermission()); return allPermissions; } public PermissionCollection getPermissions(CodeSource codesource) { Permissions permissions = (Permissions)permissionsMap.get(codesource); if (permissions == null) { permissions = new Permissions(); permissionsMap.put(codesource, permissions); } return permissions; } public void refresh() { } public boolean implies(ProtectionDomain domain, Permission permission) { PermissionCollection perms = getPermissions(domain.getCodeSource()); return perms.implies(permission); } public void addPermission(Permission p) { Permissions permissions = (Permissions)getPermissions(testDomain.getCodeSource()); permissions.add(p); } public synchronized void initialize() { Permissions permissions = new Permissions(); permissions.add(new SecurityPermission("getPolicy")); permissionsMap.put(testDomain.getCodeSource(), permissions); } } } Steps to reproduce: 1. javac Test.java 2. jar cf Test.jar *.class 3. rm *.class 4. -cp .;Test.jar Test Output in RI: none Output in Harmony: java.security.AccessControlException: Permission check failed (java.io.FilePermi ssion C:\temp\tests\ab\.\Test2.class read) at java.security.AccessControlContext.checkPermission() at java.security.AccessController.checkPermission() at java.lang.SecurityManager.checkPermission(SecurityManager.java:737) at java.lang.SecurityManager.checkRead(SecurityManager.java:397) at java.io.File.exists(File.java:435) at java.net.URLClassLoader.findClassImpl(URLClassLoader.java:1059) at java.net.URLClassLoader$4.run(URLClassLoader.java:617) at java.net.URLClassLoader$4.run(URLClassLoader.java:616) at java.security.AccessController.doPrivilegedImpl() at java.security.AccessController.doPrivileged() at java.net.URLClassLoader.findClass(URLClassLoader.java:614) at java.lang.ClassLoader.loadClass() at java.net.URLClassLoader$SubURLClassLoader.loadClass(URLClassLoader.ja va:116) at java.lang.ClassLoader.loadClass() at java.lang.Class.forName() at java.lang.Class.forName() at Test.main(Test.java:16) Please find Test.jar attached -- 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