All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mozilla.javascript.SecurityUtilities Maven / Gradle / Ivy

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