garydgregory commented on code in PR #766:
URL: https://github.com/apache/commons-text/pull/766#discussion_r3944424608


##########
src/main/java/org/apache/commons/text/lookup/XmlStringLookup.java:
##########
@@ -128,14 +130,21 @@ public String lookup(final String key) {
         }
         final String documentPath = keys[0];
         final String xpath = StringUtils.substringAfterLast(key, SPLIT_CH);
-        final DocumentBuilderFactory dbFactory = 
DocumentBuilderFactory.newInstance();
+        // The secure factory installs a non-removable resolver floor that 
ignores the JAXP access properties,
+        // so the documented opt-outs keep a plain factory: a feature map 
without secure processing, or the
+        // standard javax.xml.accessExternalDTD system property re-allowing 
external access.
+        final boolean secure = 
Boolean.TRUE.equals(xmlFactoryFeatures.get(XMLConstants.FEATURE_SECURE_PROCESSING))
+                && 
StringUtils.isEmpty(System.getProperty("javax.xml.accessExternalDTD"));
+        final DocumentBuilderFactory dbFactory = secure ? 
SecureDocumentBuilderFactory.newInstance() : 
DocumentBuilderFactory.newInstance();
         try {
             for (final Entry<String, Boolean> p : 
xmlFactoryFeatures.entrySet()) {
                 dbFactory.setFeature(p.getKey(), p.getValue());
             }
             try (InputStream inputStream = 
Files.newInputStream(getPath(documentPath))) {
                 final Document doc = 
dbFactory.newDocumentBuilder().parse(inputStream);
-                final XPathFactory xpFactory = XPathFactory.newInstance();
+                final XPathFactory xpFactory = 
Boolean.TRUE.equals(xPathFactoryFeatures.get(XMLConstants.FEATURE_SECURE_PROCESSING))

Review Comment:
   Same question as above.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to