From 4b30c6bda06ac549212f96617c4c3e171e56876a Mon Sep 17 00:00:00 2001 From: Michael Koch Date: Mon, 25 Apr 2005 20:35:17 +0000 Subject: [PATCH] Runtime.java, [...]: Replaced java.lang.Runtime.securityManager by java.lang.SecurityManager.current... 2005-04-25 Michael Koch * java/lang/Runtime.java, java/lang/SecurityManager.java, java/lang/System.java, java/lang/ThreadGroup.java: Replaced java.lang.Runtime.securityManager by java.lang.SecurityManager.current (as used in GNU classpath). From-SVN: r98738 --- libjava/ChangeLog | 9 +++++++++ libjava/java/lang/Runtime.java | 24 ++++++++---------------- libjava/java/lang/SecurityManager.java | 8 ++++++++ libjava/java/lang/System.java | 26 +++++++++++++------------- libjava/java/lang/ThreadGroup.java | 2 +- 5 files changed, 39 insertions(+), 30 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index a5ead7c..36a2165 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,12 @@ +2005-04-25 Michael Koch + + * java/lang/Runtime.java, + java/lang/SecurityManager.java, + java/lang/System.java, + java/lang/ThreadGroup.java: + Replaced java.lang.Runtime.securityManager by + java.lang.SecurityManager.current (as used in GNU classpath). + 2005-04-25 David Gilbert * java/awt/Transparency.java diff --git a/libjava/java/lang/Runtime.java b/libjava/java/lang/Runtime.java index 858b331..7a0c598 100644 --- a/libjava/java/lang/Runtime.java +++ b/libjava/java/lang/Runtime.java @@ -65,14 +65,6 @@ public class Runtime */ private final String[] libpath; - /** - * The current security manager. This is located here instead of in - * System, to avoid security problems, as well as bootstrap issues. - * Make sure to access it in a thread-safe manner; it is package visible - * to avoid overhead in java.lang. - */ - static SecurityManager securityManager; - static { init(); @@ -151,7 +143,7 @@ public class Runtime */ public void exit(int status) { - SecurityManager sm = securityManager; // Be thread-safe! + SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkExit(status); boolean first = false; @@ -279,7 +271,7 @@ public class Runtime */ public void addShutdownHook(Thread hook) { - SecurityManager sm = securityManager; // Be thread-safe! + SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkPermission(new RuntimePermission("shutdownHooks")); if (hook.isAlive() || hook.getThreadGroup() == null) @@ -313,7 +305,7 @@ public class Runtime */ public boolean removeShutdownHook(Thread hook) { - SecurityManager sm = securityManager; // Be thread-safe! + SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkPermission(new RuntimePermission("shutdownHooks")); synchronized (libpath) @@ -340,7 +332,7 @@ public class Runtime */ public void halt(int status) { - SecurityManager sm = securityManager; // Be thread-safe! + SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkExit(status); exitInternal(status); @@ -364,7 +356,7 @@ public class Runtime */ public static void runFinalizersOnExit(boolean finalizeOnExit) { - SecurityManager sm = securityManager; // Be thread-safe! + SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkExit(0); current.finalizeOnExit = finalizeOnExit; @@ -494,7 +486,7 @@ public class Runtime public Process exec(String[] cmd, String[] env, File dir) throws IOException { - SecurityManager sm = securityManager; // Be thread-safe! + SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkExec(cmd[0]); return execInternal(cmd, env, dir); @@ -581,7 +573,7 @@ public class Runtime */ public void load(String filename) { - SecurityManager sm = securityManager; // Be thread-safe! + SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkLink(filename); _load(filename, false); @@ -611,7 +603,7 @@ public class Runtime { // This is different from the Classpath implementation, but I // believe it is more correct. - SecurityManager sm = securityManager; // Be thread-safe! + SecurityManager sm = SecurityManager.current; // Be thread-safe! if (sm != null) sm.checkLink(libname); _load(libname, true); diff --git a/libjava/java/lang/SecurityManager.java b/libjava/java/lang/SecurityManager.java index 350439e..387a8a9 100644 --- a/libjava/java/lang/SecurityManager.java +++ b/libjava/java/lang/SecurityManager.java @@ -126,6 +126,14 @@ import java.util.PropertyPermission; public class SecurityManager { /** + * The current security manager. This is located here instead of in + * System, to avoid security problems, as well as bootstrap issues. + * Make sure to access it in a thread-safe manner; it is package visible + * to avoid overhead in java.lang. + */ + static volatile SecurityManager current; + + /** * Tells whether or not the SecurityManager is currently performing a * security check. * @deprecated Use {@link #checkPermission(Permission)} instead. diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java index b621f26..8632d0b 100644 --- a/libjava/java/lang/System.java +++ b/libjava/java/lang/System.java @@ -120,7 +120,7 @@ public final class System */ public static void setIn(InputStream in) { - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPermission(new RuntimePermission("setIO")); setIn0(in); @@ -137,7 +137,7 @@ public final class System */ public static void setOut(PrintStream out) { - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPermission(new RuntimePermission("setIO")); @@ -155,7 +155,7 @@ public final class System */ public static void setErr(PrintStream err) { - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPermission(new RuntimePermission("setIO")); setErr0(err); @@ -180,10 +180,10 @@ public final class System // Implementation note: the field lives in Runtime because of bootstrap // initialization issues. This method is synchronized so that no other // thread changes it to null before this thread makes the change. - if (Runtime.securityManager != null) - Runtime.securityManager.checkPermission + if (SecurityManager.current != null) + SecurityManager.current.checkPermission (new RuntimePermission("setSecurityManager")); - Runtime.securityManager = sm; + SecurityManager.current = sm; } /** @@ -196,7 +196,7 @@ public final class System { // Implementation note: the field lives in Runtime because of bootstrap // initialization issues. - return Runtime.securityManager; + return SecurityManager.current; } /** @@ -309,7 +309,7 @@ public final class System */ public static Properties getProperties() { - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPropertiesAccess(); return SystemProperties.getProperties(); @@ -326,7 +326,7 @@ public final class System */ public static void setProperties(Properties properties) { - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPropertiesAccess(); SystemProperties.setProperties(properties); @@ -344,7 +344,7 @@ public final class System */ public static String getProperty(String key) { - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPropertyAccess(key); else if (key.length() == 0) @@ -365,7 +365,7 @@ public final class System */ public static String getProperty(String key, String def) { - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPropertyAccess(key); return SystemProperties.getProperty(key, def); @@ -385,7 +385,7 @@ public final class System */ public static String setProperty(String key, String value) { - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPermission(new PropertyPermission(key, "write")); return SystemProperties.setProperty(key, value); @@ -407,7 +407,7 @@ public final class System { if (name == null) throw new NullPointerException(); - SecurityManager sm = Runtime.securityManager; // Be thread-safe. + SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPermission(new RuntimePermission("getenv." + name)); return getenv0(name); diff --git a/libjava/java/lang/ThreadGroup.java b/libjava/java/lang/ThreadGroup.java index 0464767..30a6e14 100644 --- a/libjava/java/lang/ThreadGroup.java +++ b/libjava/java/lang/ThreadGroup.java @@ -263,7 +263,7 @@ public class ThreadGroup public final void checkAccess() { // Bypass System.getSecurityManager, for bootstrap efficiency. - SecurityManager sm = Runtime.securityManager; + SecurityManager sm = SecurityManager.current; if (sm != null) sm.checkAccess(this); } -- 2.7.4