This is an automated email from the ASF dual-hosted git repository. tallison pushed a commit to branch TIKA-3990 in repository https://gitbox.apache.org/repos/asf/tika.git
commit 6e01fe67a506f0a20fb7cca813e2c834638a5424 Author: tallison <[email protected]> AuthorDate: Tue Mar 21 14:13:55 2023 -0400 TIKA-3990 -- close pkg for regular InputStreams --- .../tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java index ca1f180b1..6ea9d5a5f 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java @@ -98,6 +98,9 @@ public class OOXMLExtractorFactory { File tmpRepairedCopy = null; OPCPackage pkg = null; + //if the pkg is in the opencontainer of a TikaInputStream, it will get closed. + //However, if a regular inputstream has been sent in, we need to revert the pkg. + boolean mustRevertPackage = false; try { OOXMLExtractor extractor = null; @@ -117,6 +120,7 @@ public class OOXMLExtractorFactory { } else { //OPCPackage slurps rris into memory so we can close rris //without apparent problems + mustRevertPackage = true; try (RereadableInputStream rereadableInputStream = new RereadableInputStream(stream, MAX_BUFFER_LENGTH, false)) { try { @@ -254,10 +258,10 @@ public class OOXMLExtractorFactory { } catch (RuntimeSAXException e) { throw (SAXException) e.getCause(); } finally { + if (pkg != null && mustRevertPackage) { + pkg.revert(); + } if (tmpRepairedCopy != null) { - if (pkg != null) { - pkg.revert(); - } boolean deleted = tmpRepairedCopy.delete(); if (!deleted) { LOG.warn("failed to delete tmp (repair) file: " +
