Skip to content

Commit 78098db

Browse files
authored
Merge pull request #3367 from hazendaz/pom-cleanup
tests: Use secure xsds
2 parents 0e93702 + 9a5565b commit 78098db

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

src/test/java/org/apache/ibatis/parsing/XPathParserTest.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222
import java.io.InputStream;
2323
import java.io.Reader;
2424

25+
import javax.xml.XMLConstants;
2526
import javax.xml.parsers.DocumentBuilder;
2627
import javax.xml.parsers.DocumentBuilderFactory;
28+
import javax.xml.parsers.ParserConfigurationException;
2729

2830
import org.apache.ibatis.builder.BuilderException;
2931
import org.apache.ibatis.io.Resources;
@@ -156,11 +158,29 @@ private Document getDocument(String resource) {
156158
try {
157159
InputSource inputSource = new InputSource(Resources.getResourceAsReader(resource));
158160
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
161+
String feature = null;
162+
try {
163+
feature = "http://xml.org/sax/features/external-parameter-entities";
164+
factory.setFeature(feature, false);
165+
166+
feature = "http://apache.org/xml/features/nonvalidating/load-external-dtd";
167+
factory.setFeature(feature, false);
168+
169+
feature = "http://xml.org/sax/features/external-general-entities";
170+
factory.setFeature(feature, false);
171+
172+
factory.setXIncludeAware(false);
173+
factory.setExpandEntityReferences(false);
174+
175+
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
176+
177+
} catch (ParserConfigurationException e) {
178+
throw new IllegalStateException("The feature '" + feature + "' is not supported by your XML processor.", e);
179+
}
159180
factory.setNamespaceAware(false);
160181
factory.setIgnoringComments(true);
161182
factory.setIgnoringElementContentWhitespace(false);
162183
factory.setCoalescing(false);
163-
factory.setExpandEntityReferences(true);
164184
DocumentBuilder builder = factory.newDocumentBuilder();
165185
return builder.parse(inputSource);// already closed resource in builder.parse method
166186
} catch (Exception e) {

0 commit comments

Comments
 (0)