]> source.dussan.org Git - poi.git/commitdiff
[bug-65326] accessExternalSchema is usually not accepted on TransformerFactory
authorPJ Fanning <fanningpj@apache.org>
Fri, 8 Oct 2021 16:15:14 +0000 (16:15 +0000)
committerPJ Fanning <fanningpj@apache.org>
Fri, 8 Oct 2021 16:15:14 +0000 (16:15 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1894032 13f79535-47bb-0310-9956-ffa450edef68

poi/src/main/java/org/apache/poi/util/XMLHelper.java

index 87a481b04ce65d970f74f91f66f41c8b7509b4d7..8e7bae28989b4564ea3113c5bbe787e05929d0b9 100644 (file)
@@ -223,7 +223,7 @@ public final class XMLHelper {
         trySet(factory::setFeature, FEATURE_SECURE_PROCESSING, true);
         trySet(factory::setAttribute, ACCESS_EXTERNAL_DTD, "");
         trySet(factory::setAttribute, ACCESS_EXTERNAL_STYLESHEET, "");
-        trySet(factory::setAttribute, ACCESS_EXTERNAL_SCHEMA, "");
+        quietSet(factory::setAttribute, ACCESS_EXTERNAL_SCHEMA, "");
         return factory;
     }
 
@@ -292,6 +292,16 @@ public final class XMLHelper {
         return false;
     }
 
+    private static boolean quietSet(SecurityProperty property, String name, Object value) {
+        try {
+            property.accept(name, value);
+            return true;
+        } catch (Exception|Error e) {
+            // ok to ignore
+        }
+        return false;
+    }
+
     private static void logThrowable(Throwable t, String message, String name) {
         if (System.currentTimeMillis() > lastLog + TimeUnit.MINUTES.toMillis(5)) {
             LOG.atWarn().withThrowable(t).log("{} [log suppressed for 5 minutes]{}", message, name);