< prev index next >
test/javax/xml/jaxp/unittest/xpath/SecureProcessingTest.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 21,30 ****
--- 21,31 ----
* questions.
*/
package xpath;
+ import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
*** 40,70 ****
import javax.xml.xpath.XPathFactoryConfigurationException;
import javax.xml.xpath.XPathFunction;
import javax.xml.xpath.XPathFunctionException;
import javax.xml.xpath.XPathFunctionResolver;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/*
* @summary Test when FEATURE_SECURE_PROCESSING is true, calling an external function will cause XPathFunctionException.
*/
public class SecureProcessingTest {
! static boolean _isSecureMode = false;
! static {
! if (System.getSecurityManager() != null) {
! _isSecureMode = true;
! System.out.println("Security Manager is present");
! } else {
! System.out.println("Security Manager is NOT present");
}
}
! @Test
! public final void testSecureProcessing() {
final String XPATH_EXPRESSION = "ext:helloWorld()";
// the xml source
InputStream xmlStream = this.getClass().getResourceAsStream("SecureProcessingTest.xml");
--- 41,73 ----
import javax.xml.xpath.XPathFactoryConfigurationException;
import javax.xml.xpath.XPathFunction;
import javax.xml.xpath.XPathFunctionException;
import javax.xml.xpath.XPathFunctionResolver;
+ import jaxp.library.JAXPTestUtilities;
+
import org.testng.Assert;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/*
* @summary Test when FEATURE_SECURE_PROCESSING is true, calling an external function will cause XPathFunctionException.
*/
+ @Test(singleThreaded = true)
public class SecureProcessingTest {
! public void runWithSecurityManager() throws Exception {
! JAXPTestUtilities.tryRunWithPolicyManager(() -> testSecureProcessing(),
! new FilePermission(System.getProperty("test.src") + "/-", "read"));
}
+
+ public void runWithoutSecurityManager() throws Exception {
+ testSecureProcessing();
}
! private final void testSecureProcessing() {
! boolean _isSecureMode = System.getSecurityManager() != null;
final String XPATH_EXPRESSION = "ext:helloWorld()";
// the xml source
InputStream xmlStream = this.getClass().getResourceAsStream("SecureProcessingTest.xml");
*** 148,175 ****
if (!securityException) {
Assert.fail("XPath result (SECURE_PROCESSING == true) = \"" + xPathResult + "\"");
}
}
! public class MyXPathFunctionResolver implements XPathFunctionResolver {
public XPathFunction resolveFunction(QName functionName, int arity) {
// not a real ewsolver, always return a default XPathFunction
return new MyXPathFunction();
}
}
! public class MyXPathFunction implements XPathFunction {
public Object evaluate(List list) throws XPathFunctionException {
return "Hello World";
}
}
! public class MyNamespaceContext implements NamespaceContext {
public String getNamespaceURI(String prefix) {
if (prefix == null) {
throw new IllegalArgumentException("The prefix cannot be null.");
}
--- 151,178 ----
if (!securityException) {
Assert.fail("XPath result (SECURE_PROCESSING == true) = \"" + xPathResult + "\"");
}
}
! private class MyXPathFunctionResolver implements XPathFunctionResolver {
public XPathFunction resolveFunction(QName functionName, int arity) {
// not a real ewsolver, always return a default XPathFunction
return new MyXPathFunction();
}
}
! private class MyXPathFunction implements XPathFunction {
public Object evaluate(List list) throws XPathFunctionException {
return "Hello World";
}
}
! private class MyNamespaceContext implements NamespaceContext {
public String getNamespaceURI(String prefix) {
if (prefix == null) {
throw new IllegalArgumentException("The prefix cannot be null.");
}
< prev index next >