classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SecurityManager troubles


From: Archie Cobbs
Subject: Re: SecurityManager troubles
Date: Fri, 13 Jan 2006 12:40:24 -0600
User-agent: Mozilla Thunderbird 1.0.6 (X11/20050715)

Gary Benson wrote:
Gary Benson wrote:
Jeroen Frijters wrote:
I think I figured it out. With the attached test I could reproduce
the problem on IKVM as well. The attach Classpath patch fixing
things, although past 0.20 I think we should refactor the security
properties like I did with the system properties (i.e. introduce a
gnu.classpath.SecurityProperties class).
The change to java.security.Security has made the majority of the
Mauve workarounds unnecessary: thanks!  Now to see if I can get rid
of the last little bit...

The attached patch allows all Mauve workarounds to be removed.
Ok to commit?

Cheers,
Gary


------------------------------------------------------------------------

Index: ChangeLog
===================================================================
RCS file: /cvsroot/classpath/classpath/ChangeLog,v
retrieving revision 1.6049
diff -u -r1.6049 ChangeLog
--- ChangeLog   13 Jan 2006 14:30:27 -0000      1.6049
+++ ChangeLog   13 Jan 2006 14:33:56 -0000
@@ -1,3 +1,8 @@
+2006-01-13  Gary Benson  <address@hidden>
+
+       * java/lang/System.java (setSecurityManager): Ensure policy
+       files are loaded before a security manager is put in place.
+
 2006-01-13  Mark Wielaard  <address@hidden>
* configure.ac: Set version to 0.20.
Index: java/lang/System.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/System.java,v
retrieving revision 1.53
diff -u -r1.53 System.java
--- java/lang/System.java       13 Sep 2005 22:19:15 -0000      1.53
+++ java/lang/System.java       13 Jan 2006 14:33:56 -0000
@@ -178,6 +178,23 @@
     if (SecurityManager.current != null)
       SecurityManager.current.checkPermission
         (new RuntimePermission("setSecurityManager"));
+
+    // java.security.Security's class initialiser loads and parses the
+    // policy files.  If it hasn't been run already it will be run
+    // during the first permission check.  That initialisation will
+    // fail if a very restrictive security manager is in force, so we
+    // preload it here.
+    if (SecurityManager.current == null)
+      {
+       try
+         {
+           Class.forName("java.security.Security");
+         }
+       catch (Throwable t)
+         {
+         }
+      }
+ SecurityManager.current = sm;

It might be more appropriate to only catch Exception, not Throwable.

-Archie

__________________________________________________________________________
Archie Cobbs      *        CTO, Awarix        *      http://www.awarix.com




reply via email to

[Prev in Thread] Current Thread [Next in Thread]