This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/master by this push:
     new b2d5a99  [KARAF-6923] Avoid XML entity injection in several locations
     new 29d02c2  Merge pull request #1257 from jbonofre/KARAF-6923
b2d5a99 is described below

commit b2d5a9993f71bbaeafa980dfb86bf431910715f4
Author: jbonofre <[email protected]>
AuthorDate: Wed Nov 25 14:04:39 2020 +0100

    [KARAF-6923] Avoid XML entity injection in several locations
---
 .../org/apache/karaf/bundle/core/internal/MavenConfigService.java    | 5 ++++-
 .../apache/karaf/deployer/features/FeatureDeploymentListener.java    | 2 ++
 .../org/apache/karaf/deployer/spring/SpringDeploymentListener.java   | 2 ++
 .../features/internal/service/FeaturesProcessingSerializer.java      | 5 ++++-
 .../src/main/java/org/apache/karaf/tooling/AssemblyMojo.java         | 2 ++
 5 files changed, 14 insertions(+), 2 deletions(-)

diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
index 3227385..fce7070 100644
--- 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
+++ 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
@@ -86,7 +86,10 @@ public class MavenConfigService {
        private static String getLocalRepositoryFromSettings(File file) {
                XMLStreamReader reader = null;
                try (InputStream fin = new FileInputStream(file)) {
-                       reader = 
XMLInputFactory.newFactory().createXMLStreamReader(fin);
+                       XMLInputFactory factory = XMLInputFactory.newFactory();
+                       factory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
+                       
factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
+                       reader = factory.createXMLStreamReader(fin);
                    int event;
                    String elementName = null;
                    while ((event = reader.next()) != 
XMLStreamConstants.END_DOCUMENT) {
diff --git 
a/deployer/features/src/main/java/org/apache/karaf/deployer/features/FeatureDeploymentListener.java
 
b/deployer/features/src/main/java/org/apache/karaf/deployer/features/FeatureDeploymentListener.java
index 5c4c7ee..7f78493 100644
--- 
a/deployer/features/src/main/java/org/apache/karaf/deployer/features/FeatureDeploymentListener.java
+++ 
b/deployer/features/src/main/java/org/apache/karaf/deployer/features/FeatureDeploymentListener.java
@@ -265,6 +265,8 @@ public class FeatureDeploymentListener implements 
ArtifactUrlTransformer, Bundle
     private QName getRootElementName(File artifact) throws Exception {
         if (xif == null) {
             xif = XMLInputFactory.newFactory();
+            xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
+            xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, 
false);
             xif.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);
         }
         try (InputStream is = new FileInputStream(artifact)) {
diff --git 
a/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/SpringDeploymentListener.java
 
b/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/SpringDeploymentListener.java
index d49ba74..0953f66 100644
--- 
a/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/SpringDeploymentListener.java
+++ 
b/deployer/spring/src/main/java/org/apache/karaf/deployer/spring/SpringDeploymentListener.java
@@ -71,6 +71,8 @@ public class SpringDeploymentListener implements 
ArtifactUrlTransformer {
        try {
                        if (factory == null) {
                                factory = XMLInputFactory.newInstance();
+                               
factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
+                               
factory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
                        }
                        in = new FileInputStream(artifact);
                        parser = factory.createXMLEventReader(in);
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessingSerializer.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessingSerializer.java
index 2182382..a92e825 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessingSerializer.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesProcessingSerializer.java
@@ -162,7 +162,10 @@ public class FeaturesProcessingSerializer {
             Properties props = new Properties();
             
props.load(getClass().getResourceAsStream("feature-processing-comments.properties"));
 
-            XMLEventReader xmlEventReader = 
XMLInputFactory.newFactory().createXMLEventReader(new 
ByteArrayInputStream(baos.toByteArray()));
+            XMLInputFactory factory = XMLInputFactory.newFactory();
+            factory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
+            
factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
+            XMLEventReader xmlEventReader = factory.createXMLEventReader(new 
ByteArrayInputStream(baos.toByteArray()));
             XMLEventWriter xmlEventWriter = new 
IndentingXMLEventWriter(XMLOutputFactory.newFactory().createXMLEventWriter(writer),
 "    ");
             XMLEventFactory evFactory = XMLEventFactory.newFactory();
             int depth = 0;
diff --git 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java
 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java
index 7a80f85..62f2592 100644
--- 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java
+++ 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java
@@ -832,6 +832,8 @@ public class AssemblyMojo extends MojoSupport {
             try (InputStream is = new FileInputStream(artifact.getFile())) {
                 XMLInputFactory xif = XMLInputFactory.newFactory();
                 xif.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);
+                xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
+                
xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
                 XMLStreamReader r = xif.createXMLStreamReader(is);
                 r.nextTag();
                 QName name = r.getName();

Reply via email to