This is an automated email from the ASF dual-hosted git repository.
tilman pushed a commit to branch branch_3x
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/branch_3x by this push:
new 9b04d0252 [TIKA-4586] Fix NPE in ConfigBase (#2474)
9b04d0252 is described below
commit 9b04d02524b43d68c01f006d9c630718d7c8ea73
Author: Gus Heck <[email protected]>
AuthorDate: Mon Dec 22 06:35:47 2025 -0500
[TIKA-4586] Fix NPE in ConfigBase (#2474)
* TIKA-4586 Fix NPE in ConfigBase
* TIKA-4586 Test Demonstrating TIKA-4586
* TIKA-4586 spotless nits
---
.../main/java/org/apache/tika/config/ConfigBase.java | 6 ++++--
.../java/org/apache/tika/config/TikaConfigTest.java | 18 ++++++++++++++++++
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/tika-core/src/main/java/org/apache/tika/config/ConfigBase.java
b/tika-core/src/main/java/org/apache/tika/config/ConfigBase.java
index 405294fae..4afe30ac3 100644
--- a/tika-core/src/main/java/org/apache/tika/config/ConfigBase.java
+++ b/tika-core/src/main/java/org/apache/tika/config/ConfigBase.java
@@ -141,7 +141,8 @@ public abstract class ConfigBase {
Element properties)
throws TikaConfigException, IOException {
- if (!properties.getLocalName().equals("properties")) {
+ if (!("properties".equals(properties.getNodeName()) ||
+ "properties".equals(properties.getLocalName()))) {
throw new TikaConfigException("expect properties as root node");
}
NodeList children = properties.getChildNodes();
@@ -151,7 +152,8 @@ public abstract class ConfigBase {
if (child.getNodeType() != 1) {
continue;
}
- if (compositeElementName.equals(child.getLocalName())) {
+ if (compositeElementName.equals(child.getNodeName()) ||
+ compositeElementName.equals(child.getLocalName())) {
List<T> components = loadComposite(child, itemName, itemClass);
Constructor constructor = null;
try {
diff --git a/tika-core/src/test/java/org/apache/tika/config/TikaConfigTest.java
b/tika-core/src/test/java/org/apache/tika/config/TikaConfigTest.java
index 97ff3f376..a6ef64236 100644
--- a/tika-core/src/test/java/org/apache/tika/config/TikaConfigTest.java
+++ b/tika-core/src/test/java/org/apache/tika/config/TikaConfigTest.java
@@ -31,8 +31,11 @@ import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadPoolExecutor;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
import org.junit.jupiter.api.Test;
+import org.w3c.dom.Document;
import org.apache.tika.ResourceLoggingClassLoader;
import org.apache.tika.exception.TikaConfigException;
@@ -52,6 +55,7 @@ import org.apache.tika.parser.mock.MockParser;
import org.apache.tika.parser.multiple.FallbackParser;
import org.apache.tika.utils.XMLReaderUtils;
+
/**
* Tests for the Tika Config, which don't require real parsers /
* detectors / etc.
@@ -468,4 +472,18 @@ public class TikaConfigTest extends AbstractTikaConfigTest
{
assertNull(config.getMaximumDepth());
assertNull(config.getMaximumPackageEntryDepth());
}
+
+ @Test void testTika4586() throws Exception {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ InputStream stream =
TikaConfig.class.getResourceAsStream("TIKA-866-valid.xml");
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document parsed = db.parse(stream);
+
+ try {
+ new TikaConfig(parsed); // if TIKA-4586, this throws an exception.
+ } catch (Exception e) {
+ fail("TikaConfig(Document) constructor threw an exception",e);
+ }
+
+ }
}