Runtime.java, [...]: Replaced java.lang.Runtime.securityManager by java.lang.SecurityManager.current...
2005-04-25 Michael Koch <konqueror@gmx.de> * 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
This commit is contained in:
parent
1f4ea3f2fa
commit
4b30c6bda0
5 changed files with 39 additions and 30 deletions
|
@ -1,3 +1,12 @@
|
|||
2005-04-25 Michael Koch <konqueror@gmx.de>
|
||||
|
||||
* 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 <david.gilbert@object-refinery.com>
|
||||
|
||||
* java/awt/Transparency.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);
|
||||
|
|
|
@ -125,6 +125,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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue