This is an automated email from the ASF dual-hosted git repository. pmouawad pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/jmeter.git
commit bccc3e05760930ab210da78feccb68f8830da6c9 Author: pmouawad <[email protected]> AuthorDate: Tue Oct 1 11:23:29 2019 +0200 Add test for unsecure XML loading --- .../java/org/apache/jmeter/assertions/XMLAssertion.java | 4 +--- .../org/apache/jmeter/assertions/XmlAssertionTest.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/src/main/java/org/apache/jmeter/assertions/XMLAssertion.java b/src/components/src/main/java/org/apache/jmeter/assertions/XMLAssertion.java index 4eb9554..b5dbbc1 100644 --- a/src/components/src/main/java/org/apache/jmeter/assertions/XMLAssertion.java +++ b/src/components/src/main/java/org/apache/jmeter/assertions/XMLAssertion.java @@ -22,8 +22,6 @@ import java.io.IOException; import java.io.Serializable; import java.io.StringReader; -import javax.xml.XMLConstants; - import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.ThreadListener; @@ -49,7 +47,7 @@ public class XMLAssertion extends AbstractTestElement implements Serializable, A protected XMLReader initialValue() { try { XMLReader reader = XMLReaderFactory.createXMLReader(); - reader.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); return reader; } catch (SAXException e) { log.error("Error initializing XMLReader in XMLAssertion", e); diff --git a/src/components/src/test/java/org/apache/jmeter/assertions/XmlAssertionTest.java b/src/components/src/test/java/org/apache/jmeter/assertions/XmlAssertionTest.java index cd142bd..951a877 100644 --- a/src/components/src/test/java/org/apache/jmeter/assertions/XmlAssertionTest.java +++ b/src/components/src/test/java/org/apache/jmeter/assertions/XmlAssertionTest.java @@ -35,6 +35,10 @@ public class XmlAssertionTest extends JMeterTestCase { private final String invalidXml = "<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note1>"; private final String validXml = "<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"; private final String noXml = "response Data"; + private final String unsecureXML = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" + + "<!DOCTYPE foo [\n" + + " <!ENTITY xxe SYSTEM \"file:///etc/passwd\" > ]>\n" + + "<foo>&xxe;</foo>"; @Before public void setUp() { @@ -47,6 +51,16 @@ public class XmlAssertionTest extends JMeterTestCase { } @Test + public void testUnsecureX() throws Exception { + sampleResult.setResponseData(unsecureXML, null); + result = assertion.getResult(sampleResult); + Assert.assertTrue(result.isFailure()); + Assert.assertTrue(result.isError()); + Assert.assertEquals("DOCTYPE is disallowed when the feature \"http://apache.org/xml/features/disallow-doctype-decl\" set to true.", + result.getFailureMessage()); + } + + @Test public void testValidXML() throws Exception { sampleResult.setResponseData(validXml, null); result = assertion.getResult(sampleResult);
