From 1079e66ea7cc4a53d4d4a7e54a615bddbfeaaa12 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 4 Apr 2018 19:41:16 +0000 Subject: [PATCH] Close resources correctly when opening encrypted documents in the TextExtractor git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1828378 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/extractor/ExtractorFactory.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java index db98f2e905..910baf6a64 100644 --- a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java +++ b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java @@ -132,7 +132,7 @@ public class ExtractorFactory { try { fs = new NPOIFSFileSystem(f); if (fs.getRoot().hasEntry(Decryptor.DEFAULT_POIFS_ENTRY)) { - return createEncyptedOOXMLExtractor(fs); + return createEncryptedOOXMLExtractor(fs); } POIOLE2TextExtractor extractor = createExtractor(fs); extractor.setFilesystem(fs); @@ -161,7 +161,7 @@ public class ExtractorFactory { case OLE2: NPOIFSFileSystem fs = new NPOIFSFileSystem(is); boolean isEncrypted = fs.getRoot().hasEntry(Decryptor.DEFAULT_POIFS_ENTRY); - return isEncrypted ? createEncyptedOOXMLExtractor(fs) : createExtractor(fs); + return isEncrypted ? createEncryptedOOXMLExtractor(fs) : createExtractor(fs); case OOXML: return createExtractor(OPCPackage.open(is)); default: @@ -403,7 +403,7 @@ public class ExtractorFactory { throw new IllegalStateException("Not yet supported"); } - private static POIXMLTextExtractor createEncyptedOOXMLExtractor(NPOIFSFileSystem fs) + private static POIXMLTextExtractor createEncryptedOOXMLExtractor(NPOIFSFileSystem fs) throws IOException { String pass = Biff8EncryptionKey.getCurrentUserPassword(); if (pass == null) { @@ -425,6 +425,10 @@ public class ExtractorFactory { throw new EncryptedDocumentException(e); } finally { IOUtils.closeQuietly(is); + + // also close the NPOIFSFileSystem here as we read all the data + // while decrypting + fs.close(); } } } -- 2.39.5