OSDN Git Service

2007-01-26 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Jan 2007 13:43:22 +0000 (13:43 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Jan 2007 13:43:22 +0000 (13:43 +0000)
        * java/lang/SecurityManager.java: Load and initialize
        java.security.Security.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121287 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/classpath/java/lang/SecurityManager.java
libjava/classpath/lib/java/lang/SecurityManager.class

index 61b4612..ff84d95 100644 (file)
@@ -167,6 +167,18 @@ public class SecurityManager
    */
   public SecurityManager()
   {
    */
   public SecurityManager()
   {
+    /* "When there is security manager installed, the security manager
+       need to check the package access. However, if the security
+       manager itself uses any unloaded class, it will trigger the
+       classloading, which causes infinite loop. There is no easy
+       legal solution. The workaround will be that security manager
+       can not depend on any unloaded class. In the constructor of
+       security manager, it must transitively load all classes it
+       refers to."  Sun bug #4242924.  */
+
+    // Load and initialize java.security.Security
+    java.security.Security.getProvider((String)null);
+
     SecurityManager sm = System.getSecurityManager();
     if (sm != null)
       sm.checkPermission(new RuntimePermission("createSecurityManager"));
     SecurityManager sm = System.getSecurityManager();
     if (sm != null)
       sm.checkPermission(new RuntimePermission("createSecurityManager"));
index c8c9302..7f080b5 100644 (file)
Binary files a/libjava/classpath/lib/java/lang/SecurityManager.class and b/libjava/classpath/lib/java/lang/SecurityManager.class differ