aboutsummaryrefslogtreecommitdiffstats
path: root/libmlr
diff options
context:
space:
mode:
authorLester Solbakken <lesters@users.noreply.github.com>2018-10-15 08:54:42 +0200
committerGitHub <noreply@github.com>2018-10-15 08:54:42 +0200
commitb1915fc0c68d732870b2bc68706dcf9cf6c5da29 (patch)
treea1110f7c5f65177893e084e906663e937c77c2a0 /libmlr
parentcc32c6a456ad5349ab9e97d73ed12c95adb77cec (diff)
parent610f41d9904de453ed3e4bfbbfb50700463fd670 (diff)
Merge pull request #7298 from vespa-engine/bratseth/prevent-xxe
Prevent XXE attacks
Diffstat (limited to 'libmlr')
-rw-r--r--libmlr/pom.xml2
-rw-r--r--libmlr/src/main/java/com/yahoo/yst/libmlr/converter/parser/MlrXmlParser.java12
2 files changed, 9 insertions, 5 deletions
diff --git a/libmlr/pom.xml b/libmlr/pom.xml
index 05b17d7ba50..06fefa97c83 100644
--- a/libmlr/pom.xml
+++ b/libmlr/pom.xml
@@ -7,7 +7,7 @@
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>xml2cpp</name>
- <description>Fork of xml2cppConverver with support for SS3 models.</description>
+ <description>Fork of xml2cppConverter with support for SS3 models.</description>
<dependencies>
</dependencies>
<build>
diff --git a/libmlr/src/main/java/com/yahoo/yst/libmlr/converter/parser/MlrXmlParser.java b/libmlr/src/main/java/com/yahoo/yst/libmlr/converter/parser/MlrXmlParser.java
index 1c52b5e9309..c0283efb50a 100644
--- a/libmlr/src/main/java/com/yahoo/yst/libmlr/converter/parser/MlrXmlParser.java
+++ b/libmlr/src/main/java/com/yahoo/yst/libmlr/converter/parser/MlrXmlParser.java
@@ -17,7 +17,6 @@ import java.util.logging.Logger;
* Parses Treenet output V5 into Abstract Treenet XML File format.
*
* @author allenwei
- *
*/
public class MlrXmlParser {
@@ -30,16 +29,21 @@ public class MlrXmlParser {
private HashSet<String> respIdSet = new HashSet<String>(10000);
public MlrFunction parseXmlFile(String fileName) throws DecisionTreeXmlException {
-
File file = new File(fileName);
- if (!file.exists()) {
+ if ( ! file.exists()) {
String errMsg = fileName + " does not exist.";
logErrors(errMsg);
throw new DecisionTreeXmlException(errMsg);
}
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = null;
+ try { // XXE prevention
+ dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+ }
+ catch (ParserConfigurationException e) {
+ throw new IllegalStateException("Could not disallow-doctype-decl", e);
+ }
+ DocumentBuilder docBuilder;
try {
docBuilder = dbf.newDocumentBuilder();