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

org.apache.batik.bridge.ecmaCheckPermissionsDenied2.svg Maven / Gradle / Ivy

There is a newer version: 1.18
Show newest version














    

    Check Security Settings on Load

    
    
    
    
    
        
            ECMA Script Security Check - Function() usage
        

        
        
        
        not run

    

    
importPackage(Packages.java.awt);
importPackage(Packages.java.io);
importPackage(Packages.java.lang.reflect);
importPackage(Packages.java.net);
importPackage(Packages.java.security);
importPackage(Packages.java.sql);
importPackage(Packages.java.util);
importPackage(Packages.javax.sound.sampled);

var svgNS = "http://www.w3.org/2000/svg";
var testNS = "http://xml.apache.org/batik/test";
var testedPath = "build.sh";
var testedHost = "nagoya.apache.org:8080";

var basePermissions = [
        ["AllPermission", new AllPermission()], 
        ["FilePermission read", new FilePermission(testedPath, "read")], 
        ["FilePermission write", new FilePermission(testedPath, "write")], 
        ["FilePermission execute", new FilePermission(testedPath, "execute")], 
        ["FilePermission delete", new FilePermission(testedPath, "delete")], 
        ["SocketPermission accept", new SocketPermission(testedHost, "accept")], 
        ["SocketPermission connect", new SocketPermission(testedHost, "connect")], 
        ["SocketPermission listen", new SocketPermission(testedHost, "listen")], 
        ["SocketPermission resolve", new SocketPermission(testedHost, "resolve")], 
        ["AudioPermission play", new AudioPermission("play")], 
        ["AudioPermission record", new AudioPermission("record")], 
        ["AWTPermission accessClipboard", new AWTPermission("accessClipboard")], 
        ["AWTPermission accessEventQueue", new AWTPermission("accessEventQueue")], 
        ["AWTPermission listenToAllAWTEvents", new AWTPermission("listenToAllAWTEvents")], 
        ["AWTPermission showWindowWithoutWarningBanner", new AWTPermission("showWindowWithoutWarningBanner")], 
        ["AWTPermission readDisplayPixels", new AWTPermission("readDisplayPixels")], 
        ["AWTPermission createRobot", new AWTPermission("createRobot")], 
        ["AWTPermission fullScreenExclusive", new AWTPermission("fullScreenExclusive")], 
        ["NetPermission setDefaultAuthenticator", new NetPermission("setDefaultAuthenticator")], 
        ["NetPermission requestPasswordAuthentication", new NetPermission("requestPasswordAuthentication")], 
        ["NetPermission specifyStreamHandler", new NetPermission("specifyStreamHandler")], 
        ["PropertyPermission java.home read", new PropertyPermission("java.home", "read")], 
        ["PropertyPermission java.home write", new PropertyPermission("java.home", "write")], 
        ["ReflectPermission", new ReflectPermission("suppressAccessChecks")], 
        ["RuntimePermission createClassLoader", new RuntimePermission("createClassLoader")], 
        ["RuntimePermission getClassLoader", new RuntimePermission("getClassLoader")], 
        ["RuntimePermission setContextClassLoader", new RuntimePermission("setContextClassLoader")], 
        ["RuntimePermission setSecurityManager", new RuntimePermission("setSecurityManager")], 
        ["RuntimePermission createSecurityManager", new RuntimePermission("createSecurityManager")], 
        ["RuntimePermission exitVM", new RuntimePermission("exitVM")], 
        ["RuntimePermission shutdownHooks", new RuntimePermission("shutdownHooks")], 
        ["RuntimePermission setFactory", new RuntimePermission("setFactory")], 
        ["RuntimePermission setIO", new RuntimePermission("setIO")], 
        ["RuntimePermission modifyThread", new RuntimePermission("modifyThread")], 
        ["RuntimePermission modifyThreadGroup", new RuntimePermission("modifyThreadGroup")], 
        ["RuntimePermission getProtectionDomain", new RuntimePermission("getProtectionDomain")], 
        ["RuntimePermission readFileDescriptor", new RuntimePermission("readFileDescriptor")], 
        ["RuntimePermission writeFileDescriptor", new RuntimePermission("writeFileDescriptor")], 
        ["RuntimePermission loadLibrary.{library name}", new RuntimePermission("loadLibrary.{library name}")], 
        ["RuntimePermission accessClassInPackage.java.security", new RuntimePermission("accessClassInPackage.java.security")], 
        ["RuntimePermission defineClassInPackage.java.lang", new RuntimePermission("defineClassInPackage.java.lang")], 
        ["RuntimePermission accessDeclaredMembers", new RuntimePermission("accessDeclaredMembers")], 
        ["RuntimePermission queuePrintJob", new RuntimePermission("queuePrintJob")], 
        ["SecurityPermission createAccessControlContext", new SerializablePermission("createAccessControlContext")], 
        ["SecurityPermission getDomainCombiner", new SerializablePermission("getDomainCombiner")], 
        ["SecurityPermission getPolicy", new SerializablePermission("getPolicy")], 
        ["SecurityPermission setPolicy", new SerializablePermission("setPolicy")], 
        ["SecurityPermission setSystemScope", new SerializablePermission("setSystemScope")], 
        ["SecurityPermission setIdentityPublicKey", new SerializablePermission("setIdentityPublicKey")], 
        ["SecurityPermission setIdentityInfo", new SerializablePermission("setIdentityInfo")], 
        ["SecurityPermission addIdentityCertificate", new SerializablePermission("addIdentityCertificate")], 
        ["SecurityPermission removeIdentityCertificate", new SerializablePermission("removeIdentityCertificate")], 
        ["SecurityPermission printIdentity", new SerializablePermission("printIdentity")], 
        ["SecurityPermission getSignerPrivateKey", new SerializablePermission("getSignerPrivateKey")], 
        ["SecurityPermission setSignerKeyPair", new SerializablePermission("setSignerKeyPair")], 
        ["SerializablePermission enableSubclassImplementation", new SerializablePermission("enableSubclassImplementation")],
        ["SerializablePermission enableSubstitution", new SerializablePermission("enableSubstitution")],
        ["SQLPermission", new SQLPermission("setLog")], 
    ];
    
var permissions = null;
var statusRects = null;
var nGranted = 0;
function init(){
    var docURL = document.getURLObject();
    if (docURL != null 
        && (docURL.getHost() != null)
        && !( "" == docURL.getHost())
        ) {
        permissions = new Array();

        var docHost = docURL.getHost();
        if (docURL.getPort() != -1) {
            docHost += ":" + docURL.getPort();
        }

        nGranted = 0;
        permissions[nGranted++] = ["SocketPermission accept " + docHost,
                          new SocketPermission(docHost, "accept")];
        permissions[nGranted++] = ["SocketPermission connect " + docHost,
                          new SocketPermission(docHost, "connect")];
        permissions[nGranted++] = ["SocketPermission resolve " + docHost,
                          new SocketPermission(docHost, "resolve")];
        permissions[nGranted++] = ["RuntimePermission stopThread", 
                                   new RuntimePermission("stopThread")];

        for (var i=0; i<basePermissions.length; i++){
            permissions[nGranted+i] = basePermissions[i];
        }
    } else {
        permissions = basePermissions;
    }
}

init();

function runTest(){
    var sm = System.getSecurityManager();
    var successCnt = 0;
    var unexpectedGrants = new Array();
    var unexpectedDenial = new Array();
    var unexpectedDenialCnt = 0;
    var unexpectedGrantsCnt = 0;

    if (sm == null){
        for (var i=0; i<nGranted; i++) {
            successCnt++;
        }
        for (var i=nGranted; i<permissions.length; i++) {
            unexpectedGrants[unexpectedGrantsCnt] = permissions[i][0];
            unexpectedGrantsCnt++;
        }
    }
    else {
        for (var i=0; i<nGranted; i++) {
            var p = permissions[i][1];
            var success = true;
            try {
                sm.checkPermission(p);
                successCnt++;
            } catch (se){
                unexpectedDenial[unexpectedDenialCnt] = permissions[i][0];
                unexpectedDenialCnt++;
            }
        }
        for (var i=nGranted; i<permissions.length; i++) {
            var p = permissions[i][1];
            var success = true;
            try {
                sm.checkPermission(p);
                unexpectedGrants[unexpectedGrantsCnt] = permissions[i][0];
                unexpectedGrantsCnt++;
            } catch (se){
                successCnt++;
            }
        }
    }

    // Update the test's metadata
    var result = document.getElementById("testResult");
    if ( successCnt == permissions.length ) {
        result.setAttributeNS(null, "result", "passed");
    } else {
        System.out.println("test failed: " + unexpectedGrantsCnt + " / " + unexpectedDenialCnt);
        result.setAttributeNS(null, "result", "failed");
        result.setAttributeNS(null, "errorCode", "unexpected.grants.or.denials");
        
        var unexpectedGrantsString = "";
        var unexpectedDenialString = "";

        for (var i=0; i<unexpectedGrantsCnt; i++) {
            unexpectedGrantsString += unexpectedGrants[i];
        }

        for (var i=0; i<unexpectedDenialCnt; i++) {
            unexpectedDenialString += unexpectedDenial[i];
        }

        System.out.println("unexpected.grants : " + unexpectedGrantsString);
        var entry = null;

        entry = document.createElementNS(testNS, "errorDescriptiongEntry");
        entry.setAttributeNS(null, "id", "unexpected.grants.count");
        entry.setAttributeNS(null, "value", "" + unexpectedGrantsCnt);
        result.appendChild(entry);

        entry = document.createElementNS(testNS, "errorDescriptionEntry");
        entry.setAttributeNS(null, "id", "unexpected.grants");
        entry.setAttributeNS(null, "value", unexpectedGrantsString);
        result.appendChild(entry);

        entry = document.createElementNS(testNS, "errorDescriptiongEntry");
        entry.setAttributeNS(null, "id", "unexpected.denials.count");
        entry.setAttributeNS(null, "value", "" + unexpectedDenialCnt);
        result.appendChild(entry);

        System.out.println("unexpected.denials : " + unexpectedDenialString);
        entry = document.createElementNS(testNS, "errorDescriptionEntry");
        entry.setAttributeNS(null, "id", "unexpected.denials");
        entry.setAttributeNS(null, "value", unexpectedDenialString);   
        result.appendChild(entry); 

   }
}

runTest();

/*
    var successRatioString = "Test Result: " + successCnt + " / " + permissions.length;
    System.err.println("Success Ratio : " + successRatioString);

    var successRatio = document.getElementById("successRatio");
    if (successRatio == null) {
        alert("Error : no 'successRatio' element");
    } else {
        if (successCnt == permissions.length) {
            successRatio.firstChild.data = "Success: " + successRatioString;
        } else {
            successRatio.firstChild.data = "Failed: " + successRatioString;
        }
    }
*/
    

    






© 2015 - 2024 Weber Informatics LLC | Privacy Policy