You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Anton Luht (JIRA)" <ji...@apache.org> on 2006/08/21 18:06:13 UTC

[jira] Created: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException

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. <path to java.exe> -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

        

[jira] Commented: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException

Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1245?page=comments#action_12429660 ] 
            
Alexey Varlamov commented on HARMONY-1245:
------------------------------------------

It follows from the printed stack, that the j.n.URLClassLoader fails to iterate through the list of URLs. 
On the other hand, however, j.s.AccessController of the DRLVM seems to check frames beyond privileged one... 
So we have 2 issues here, I think.

> ClassLoader incorrectly handles AccessControlException
> ------------------------------------------------------
>
>                 Key: HARMONY-1245
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1245
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib, App-Oriented Bug Reports
>         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. <path to java.exe> -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

        

[jira] Commented: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException

Posted by "Geir Magnusson Jr (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1245?page=comments#action_12437104 ] 
            
Geir Magnusson Jr commented on HARMONY-1245:
--------------------------------------------

I can't demonstrate the problem to myself.  can you verify?

> ClassLoader incorrectly handles AccessControlException
> ------------------------------------------------------
>
>                 Key: HARMONY-1245
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1245
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib, App-Oriented Bug Reports
>         Environment: Windows XP professional
>            Reporter: Anton Luht
>         Assigned To: Geir Magnusson Jr
>         Attachments: Test.jar, ucl.patch
>
>
> 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. <path to java.exe> -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

        

[jira] Commented: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException

Posted by "Anton Luht (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1245?page=comments#action_12438086 ] 
            
Anton Luht commented on HARMONY-1245:
-------------------------------------

verified on 
r450395, (Sep 27 2006), Windows/ia32/msvc 1310, debug build

> ClassLoader incorrectly handles AccessControlException
> ------------------------------------------------------
>
>                 Key: HARMONY-1245
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1245
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib, App-Oriented Bug Reports
>         Environment: Windows XP professional
>            Reporter: Anton Luht
>         Assigned To: Geir Magnusson Jr
>         Attachments: Test.jar, ucl.patch
>
>
> 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. <path to java.exe> -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

        

[jira] Updated: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException

Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/HARMONY-1245?page=all ]

Alexey Varlamov updated HARMONY-1245:
-------------------------------------

    Attachment: ucl.patch

The fix for the first part is attached; 
it's funny that findResources(String) already has similar catch while findClass(String) does not.

I've created separate issue for the AccessController's part.

> ClassLoader incorrectly handles AccessControlException
> ------------------------------------------------------
>
>                 Key: HARMONY-1245
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1245
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib, App-Oriented Bug Reports
>         Environment: Windows XP professional
>            Reporter: Anton Luht
>         Attachments: Test.jar, ucl.patch
>
>
> 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. <path to java.exe> -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

        

[jira] Closed: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException

Posted by "Geir Magnusson Jr (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/HARMONY-1245?page=all ]

Geir Magnusson Jr closed HARMONY-1245.
--------------------------------------

    Resolution: Fixed

I can't reproduce on win or linux as of r453729

If you can get it to happen, reopen or bring to dev list

> ClassLoader incorrectly handles AccessControlException
> ------------------------------------------------------
>
>                 Key: HARMONY-1245
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1245
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib, App-Oriented Bug Reports
>         Environment: Windows XP professional
>            Reporter: Anton Luht
>         Assigned To: Geir Magnusson Jr
>         Attachments: Test.jar, ucl.patch
>
>
> 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. <path to java.exe> -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

        

[jira] Commented: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException

Posted by "Anton Luht (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1245?page=comments#action_12437497 ] 
            
Anton Luht commented on HARMONY-1245:
-------------------------------------

Geir,

Just to let you know - I'm going to verify it as soon as build is fixed (issue thread '[drlvm] my latest round of patches broke something' resolved )

> ClassLoader incorrectly handles AccessControlException
> ------------------------------------------------------
>
>                 Key: HARMONY-1245
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1245
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib, App-Oriented Bug Reports
>         Environment: Windows XP professional
>            Reporter: Anton Luht
>         Assigned To: Geir Magnusson Jr
>         Attachments: Test.jar, ucl.patch
>
>
> 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. <path to java.exe> -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

        

[jira] Assigned: (HARMONY-1245) ClassLoader incorrectly handles AccessControlException

Posted by "Geir Magnusson Jr (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/HARMONY-1245?page=all ]

Geir Magnusson Jr reassigned HARMONY-1245:
------------------------------------------

    Assignee: Geir Magnusson Jr

> ClassLoader incorrectly handles AccessControlException
> ------------------------------------------------------
>
>                 Key: HARMONY-1245
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1245
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib, App-Oriented Bug Reports
>         Environment: Windows XP professional
>            Reporter: Anton Luht
>         Assigned To: Geir Magnusson Jr
>         Attachments: Test.jar, ucl.patch
>
>
> 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. <path to java.exe> -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