jscover.mozilla.javascript.SecurityUtilities Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rhino Show documentation
Show all versions of rhino Show documentation
Rhino is an open-source implementation of JavaScript written entirely in
Java. It is typically embedded into Java applications to provide
scripting to end users.
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package jscover.mozilla.javascript;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.ProtectionDomain;
/**
* @author Attila Szegedi
*/
public class SecurityUtilities
{
/**
* Retrieves a system property within a privileged block. Use it only when
* the property is used from within Rhino code and is not passed out of it.
* @param name the name of the system property
* @return the value of the system property
*/
public static String getSystemProperty(final String name)
{
return AccessController.doPrivileged(
new PrivilegedAction()
{
public String run()
{
return System.getProperty(name);
}
});
}
public static ProtectionDomain getProtectionDomain(final Class clazz)
{
return AccessController.doPrivileged(
new PrivilegedAction()
{
public ProtectionDomain run()
{
return clazz.getProtectionDomain();
}
});
}
/**
* Look up the top-most element in the current stack representing a
* script and return its protection domain. This relies on the system-wide
* SecurityManager being an instance of {@link RhinoSecurityManager},
* otherwise it returns null
.
* @return The protection of the top-most script in the current stack, or null
*/
public static ProtectionDomain getScriptProtectionDomain() {
final SecurityManager securityManager = System.getSecurityManager();
if (securityManager instanceof RhinoSecurityManager) {
return AccessController.doPrivileged(
new PrivilegedAction() {
public ProtectionDomain run() {
Class c = ((RhinoSecurityManager) securityManager)
.getCurrentScriptClass();
return c == null ? null : c.getProtectionDomain();
}
}
);
}
return null;
}
}