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 5ba9045c7  TIKA-4436: Fix some potential resource leak (#2250)
5ba9045c7 is described below

commit 5ba9045c76781360bf02b7ccd569dd09435e9d94
Author: Xu Chengxin <[email protected]>
AuthorDate: Tue Jun 10 15:07:57 2025 +0800

     TIKA-4436: Fix some potential resource leak (#2250)
    
    Co-authored-by: xcx <[email protected]>
---
 .../src/main/java/org/apache/tika/cli/TikaCLI.java     | 18 +++++++++---------
 .../org/apache/tika/fuzzing/pdf/EvilCOSWriter.java     | 10 +++++-----
 .../org/apache/tika/parser/journal/JournalParser.java  |  6 ++++--
 .../tika/language/translate/impl/MarianTranslator.java | 16 ++++++++--------
 4 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java 
b/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
index 028c9c729..02b3987aa 100644
--- a/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
+++ b/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
@@ -863,17 +863,17 @@ public class TikaCLI {
         Set<String> fileMimes = new HashSet<>();
         for (File mf : dir.listFiles()) {
             if (mf.isFile()) {
-                BufferedReader r = new BufferedReader(new 
InputStreamReader(new FileInputStream(mf), UTF_8));
-                String line;
-                while ((line = r.readLine()) != null) {
-                    if (line.startsWith("!:mime") || 
line.startsWith("#!:mime")) {
-                        String mime = line
-                                .substring(7)
-                                .trim();
-                        fileMimes.add(mime);
+                try (BufferedReader r = new BufferedReader(new 
InputStreamReader(new FileInputStream(mf), UTF_8))) {
+                    String line;
+                    while ((line = r.readLine()) != null) {
+                        if (line.startsWith("!:mime") || 
line.startsWith("#!:mime")) {
+                            String mime = line
+                                    .substring(7)
+                                    .trim();
+                            fileMimes.add(mime);
+                        }
                     }
                 }
-                r.close();
             }
         }
 
diff --git 
a/tika-fuzzing/src/main/java/org/apache/tika/fuzzing/pdf/EvilCOSWriter.java 
b/tika-fuzzing/src/main/java/org/apache/tika/fuzzing/pdf/EvilCOSWriter.java
index c85bb8455..4e88f14a0 100644
--- a/tika-fuzzing/src/main/java/org/apache/tika/fuzzing/pdf/EvilCOSWriter.java
+++ b/tika-fuzzing/src/main/java/org/apache/tika/fuzzing/pdf/EvilCOSWriter.java
@@ -924,11 +924,11 @@ public class EvilCOSWriter implements ICOSVisitor, 
Closeable {
 
         if (signatureInterface != null) {
             // data to be signed
-            final InputStream dataToSign = getDataToSign();
-
-            // sign the bytes
-            byte[] signatureBytes = signatureInterface.sign(dataToSign);
-            writeExternalSignature(signatureBytes);
+            try (InputStream dataToSign = getDataToSign()) {
+                // sign the bytes
+                byte[] signatureBytes = signatureInterface.sign(dataToSign);
+                writeExternalSignature(signatureBytes);
+            }
         }
         // else signature should created externally and set via 
writeSignature()
     }
diff --git 
a/tika-parsers/tika-parsers-ml/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/journal/JournalParser.java
 
b/tika-parsers/tika-parsers-ml/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/journal/JournalParser.java
index 467bbb2af..92f3fffae 100644
--- 
a/tika-parsers/tika-parsers-ml/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/journal/JournalParser.java
+++ 
b/tika-parsers/tika-parsers-ml/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/journal/JournalParser.java
@@ -59,7 +59,9 @@ public class JournalParser implements Parser {
         GrobidRESTParser grobidParser = new GrobidRESTParser();
         grobidParser.parse(tmpFile.getAbsolutePath(), handler, metadata, 
context);
 
-        PDFParser parser = new PDFParser();
-        parser.parse(new FileInputStream(tmpFile), handler, metadata, context);
+        try (InputStream pdfStream = new FileInputStream(tmpFile)) {
+            PDFParser parser = new PDFParser();
+            parser.parse(pdfStream, handler, metadata, context);
+        }
     }
 }
diff --git 
a/tika-translate/src/main/java/org/apache/tika/language/translate/impl/MarianTranslator.java
 
b/tika-translate/src/main/java/org/apache/tika/language/translate/impl/MarianTranslator.java
index 38b8017a4..c8c84bd7e 100644
--- 
a/tika-translate/src/main/java/org/apache/tika/language/translate/impl/MarianTranslator.java
+++ 
b/tika-translate/src/main/java/org/apache/tika/language/translate/impl/MarianTranslator.java
@@ -152,11 +152,11 @@ public class MarianTranslator extends AbstractTranslator {
             String postProcessScript = 
config.getProperty("translator.marian.postprocess");
             executeScript(postProcessScript, tmpTranslatedFile);
 
-            BufferedReader fileReader = new BufferedReader(
+            try (BufferedReader fileReader = new BufferedReader(
                     new InputStreamReader(new 
FileInputStream(tmpTranslatedFile),
-                            Charset.defaultCharset()));
-            fileReader.lines().forEach(translation::append);
-            fileReader.close();
+                            Charset.defaultCharset()))) {
+                fileReader.lines().forEach(translation::append);
+            }
 
         } catch (InterruptedException e) {
             throw new TikaException("Failed perform translation", e);
@@ -188,10 +188,10 @@ public class MarianTranslator extends AbstractTranslator {
         builder.redirectErrorStream(true);
         Process process = builder.start();
 
-        BufferedReader stdOutReader = new BufferedReader(
-                new InputStreamReader(process.getInputStream(), 
Charset.defaultCharset()));
-        stdOutReader.lines().forEach(LOG::debug);
-        stdOutReader.close();
+        try (BufferedReader stdOutReader = new BufferedReader(
+                new InputStreamReader(process.getInputStream(), 
Charset.defaultCharset()))) {
+            stdOutReader.lines().forEach(LOG::debug);
+        }
 
         process.waitFor();
     }

Reply via email to