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 2022/04/26 12:24:26 UTC

[tika] 03/04: TIKA-3734 -- avoid illegalargumentexception with zero byte streams

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

commit 43d0434b82600458d053772caf6dedb22ece7013
Author: tallison <ta...@apache.org>
AuthorDate: Tue Apr 26 07:21:18 2022 -0400

    TIKA-3734 -- avoid illegalargumentexception with zero byte streams
---
 .../java/org/apache/tika/parser/pkg/RarParser.java  | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/RarParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/RarParser.java
index 5d0d72608..358fa59b4 100644
--- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/RarParser.java
+++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/RarParser.java
@@ -16,6 +16,7 @@
  */
 package org.apache.tika.parser.pkg;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collections;
@@ -83,14 +84,20 @@ public class RarParser extends AbstractParser {
             FileHeader header = rar.nextFileHeader();
             while (header != null && !Thread.currentThread().isInterrupted()) {
                 if (!header.isDirectory()) {
-                    try (InputStream subFile = rar.getInputStream(header)) {
-                        Metadata entrydata = PackageParser.handleEntryMetadata(
-                                "".equals(header.getFileNameW()) ? header.getFileNameString() :
-                                        header.getFileNameW(), header.getCTime(), header.getMTime(),
-                                header.getFullUnpackSize(), xhtml);
-
+                    Metadata entrydata = PackageParser.handleEntryMetadata(
+                            "".equals(header.getFileNameW()) ? header.getFileNameString() :
+                                    header.getFileNameW(), header.getCTime(), header.getMTime(),
+                            header.getFullUnpackSize(), xhtml);
+                    if (header.getFullUnpackSize() > 0) {
+                        try (InputStream subFile = rar.getInputStream(header)) {
+                            if (extractor.shouldParseEmbedded(entrydata)) {
+                                extractor.parseEmbedded(subFile, handler, entrydata, true);
+                            }
+                        }
+                    } else {
                         if (extractor.shouldParseEmbedded(entrydata)) {
-                            extractor.parseEmbedded(subFile, handler, entrydata, true);
+                            extractor.parseEmbedded(new ByteArrayInputStream(new byte[0]), handler,
+                                    entrydata, true);
                         }
                     }
                 }