org.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.
The newest version!
/* -*- 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 org.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() {
@Override
public String run() {
return System.getProperty(name);
}
});
}
public static ProtectionDomain getProtectionDomain(final Class> clazz) {
return AccessController.doPrivileged(
new PrivilegedAction() {
@Override
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() {
@Override
public ProtectionDomain run() {
Class> c =
((RhinoSecurityManager) securityManager)
.getCurrentScriptClass();
return c == null ? null : c.getProtectionDomain();
}
});
}
return null;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy