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);
}
}
}