blob: 0cc46b3cab41c1d9ba0410228d4e44ea961a4715 [file] [log] [blame]
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- ========================================================================= -->
<!-- Copyright (C) The Apache Software Foundation. All rights reserved. -->
<!-- -->
<!-- This software is published under the terms of the Apache Software License -->
<!-- version 1.1, a copy of which has been included with this distribution in -->
<!-- the LICENSE file. -->
<!-- ========================================================================= -->
<!-- ========================================================================= -->
<!-- Checks that access to critical functions is allowed. -->
<!-- -->
<!-- @author vincent.hardy@sun.com -->
<!-- @version $Id$ -->
<!-- ========================================================================= -->
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:test="http://xml.apache.org/batik/test"
width="450" height="500" viewBox="0 0 450 500"
onload="runTest()">
<test:testResult id="testResult" />
<script type="text/ecmascript"><![CDATA[
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 stopThread", new RuntimePermission("stopThread")],
["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();
}
permissions[0] = ["SocketPermission accept " + docHost,
new SocketPermission(docHost, "accept")];
permissions[1] = ["SocketPermission connect " + docHost,
new SocketPermission(docHost, "connect")];
permissions[2] = ["SocketPermission resolve " + docHost,
new SocketPermission(docHost, "resolve")];
// permissions.concat(basePermissions);
for (var i=0; i<basePermissions.length; i++){
permissions[3+i] = basePermissions[i];
}
nGranted = 3;
} else {
permissions = basePermissions;
}
}
init();
function runTest(){
var sm = System.getSecurityManager();
var successCnt = 0;
var unexpectedDenial = new Array();
var unexpectedDenialCnt = 0;
if (sm == null){
for (var i=0; i<permissions.length; i++) {
successCnt++;
}
}
else {
for (var i=0; i<permissions.length; i++) {
var p = permissions[i][1];
try {
sm.checkPermission(p);
successCnt++;
} catch (se){
unexpectedDenial[unexpectedDenialCnt] = permissions[i][0];
unexpectedDenialCnt++;
}
}
}
// 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: " + unexpectedDenialCnt);
result.setAttributeNS(null, "result", "failed");
result.setAttributeNS(null, "errorCode", "unexpected.denials");
var unexpectedDenialString = "";
for (var i=0; i<unexpectedDenialCnt; i++) {
unexpectedDenialString += unexpectedDenial[i];
}
var entry = null;
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);
}
}
]]></script>
</svg>