Repository: activemq Updated Branches: refs/heads/master 8cc0c5ad6 -> 112c4e602
Enable secure processing on all DocumentBuilderFactory.newInstance() Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/a87b61e8 Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/a87b61e8 Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/a87b61e8 Branch: refs/heads/master Commit: a87b61e8be13f190c0f5db422e75a08f347c4052 Parents: 8cc0c5a Author: Colm O hEigeartaigh <[email protected]> Authored: Thu Nov 22 10:24:43 2018 +0000 Committer: Colm O hEigeartaigh <[email protected]> Committed: Thu Nov 22 10:24:43 2018 +0000 ---------------------------------------------------------------------- .../main/java/org/apache/activemq/filter/XPathExpression.java | 2 ++ .../org/apache/activemq/console/command/CreateCommand.java | 6 +++++- .../org/apache/activemq/plugin/RuntimeConfigurationBroker.java | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/a87b61e8/activemq-client/src/main/java/org/apache/activemq/filter/XPathExpression.java ---------------------------------------------------------------------- diff --git a/activemq-client/src/main/java/org/apache/activemq/filter/XPathExpression.java b/activemq-client/src/main/java/org/apache/activemq/filter/XPathExpression.java index 75ab087..e90e15f 100644 --- a/activemq-client/src/main/java/org/apache/activemq/filter/XPathExpression.java +++ b/activemq-client/src/main/java/org/apache/activemq/filter/XPathExpression.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.Properties; import javax.jms.JMSException; +import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -59,6 +60,7 @@ public final class XPathExpression implements BooleanExpression { builderFactory.setIgnoringComments(true); try { // set some reasonable defaults + builderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE); builderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); builderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); builderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); http://git-wip-us.apache.org/repos/asf/activemq/blob/a87b61e8/activemq-console/src/main/java/org/apache/activemq/console/command/CreateCommand.java ---------------------------------------------------------------------- diff --git a/activemq-console/src/main/java/org/apache/activemq/console/command/CreateCommand.java b/activemq-console/src/main/java/org/apache/activemq/console/command/CreateCommand.java index 28080e6..f9f0fb0 100644 --- a/activemq-console/src/main/java/org/apache/activemq/console/command/CreateCommand.java +++ b/activemq-console/src/main/java/org/apache/activemq/console/command/CreateCommand.java @@ -20,6 +20,7 @@ import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.xml.sax.SAXException; +import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -158,7 +159,10 @@ public class CreateCommand extends AbstractCommand { File dest = new File(targetBase, DEFAULT_TARGET_ACTIVEMQ_CONF); context.print("Copying from: " + src.getCanonicalPath() + "\n to: " + dest.getCanonicalPath()); - DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE); + dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + DocumentBuilder builder = dbf.newDocumentBuilder(); Element docElem = builder.parse(src).getDocumentElement(); XPath xpath = XPathFactory.newInstance().newXPath(); http://git-wip-us.apache.org/repos/asf/activemq/blob/a87b61e8/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java ---------------------------------------------------------------------- diff --git a/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java b/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java index 7a06c87..0d7e17f 100644 --- a/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java +++ b/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java @@ -180,6 +180,9 @@ public class RuntimeConfigurationBroker extends AbstractRuntimeConfigurationBrok // skip beans and pull out the broker node to validate DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE); + dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(configToMonitor.getInputStream()); Node brokerRootNode = doc.getElementsByTagNameNS("*","broker").item(0); @@ -252,4 +255,4 @@ public class RuntimeConfigurationBroker extends AbstractRuntimeConfigurationBrok this.checkPeriod = checkPeriod; } -} \ No newline at end of file +}
