You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2023/03/21 19:01:17 UTC

[tika] branch main updated: TIKA-3990 -- close pkg for regular InputStreams (#1030)

This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/main by this push:
     new bf4572f13 TIKA-3990 -- close pkg for regular InputStreams (#1030)
bf4572f13 is described below

commit bf4572f138c5f6f9f718eb52cdd622d706680e33
Author: Tim Allison <ta...@apache.org>
AuthorDate: Tue Mar 21 15:01:09 2023 -0400

    TIKA-3990 -- close pkg for regular InputStreams (#1030)
---
 .../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: " +