From 47118082ffbe065bffca3717f4d53e348c66e8b1 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Fri, 8 Oct 2021 16:15:14 +0000 Subject: [PATCH] [bug-65326] accessExternalSchema is usually not accepted on TransformerFactory 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 | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/poi/src/main/java/org/apache/poi/util/XMLHelper.java b/poi/src/main/java/org/apache/poi/util/XMLHelper.java index 87a481b04c..8e7bae2898 100644 --- a/poi/src/main/java/org/apache/poi/util/XMLHelper.java +++ b/poi/src/main/java/org/apache/poi/util/XMLHelper.java @@ -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); -- 2.39.5