TIKA-3255 -- bump max record size and make it configurable for Mp3Parser.
diff --git a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/AudioFrame.java b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/AudioFrame.java
index abc4235..97712f1 100644
--- a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/AudioFrame.java
+++ b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/AudioFrame.java
@@ -244,7 +244,7 @@
} else if(version == MPEG_V1) {
buf.append("1");
} else {
- buf.append("(reseved)");
+ buf.append("(reserved)");
}
return buf.toString();
diff --git a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java
index 08dfc9d..7ddceda 100644
--- a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java
+++ b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java
@@ -32,7 +32,8 @@
*/
public class ID3v2Frame implements MP3Frame {
- private static final int MAX_RECORD_SIZE = 1_000_000;
+ private static int MAX_RECORD_SIZE = 50_000_000;
+
private int majorVersion;
private int minorVersion;
private int flags;
@@ -41,6 +42,10 @@
private byte[] extendedHeader;
private byte[] data;
+ public static void setMaxRecordSize(int maxRecordSize) {
+ MAX_RECORD_SIZE = maxRecordSize;
+ }
+
public int getMajorVersion() {
return majorVersion;
}
@@ -180,9 +185,10 @@
throws IOException {
return readFully(inp, length, true);
}
+
protected static byte[] readFully(InputStream inp, int length, boolean shortDataIsFatal)
throws IOException {
- if (length > MAX_RECORD_SIZE) {
+ if (MAX_RECORD_SIZE > 0 && length > MAX_RECORD_SIZE) {
throw new IOException("Record size ("+length+
" bytes) is larger than the allowed record size: "+MAX_RECORD_SIZE);
}
diff --git a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
index 72684e1..7a02473 100644
--- a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
+++ b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/Mp3Parser.java
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Set;
+import org.apache.tika.config.Field;
import org.apache.tika.exception.TikaException;
import org.apache.tika.io.TailStream;
import org.apache.tika.metadata.Metadata;
@@ -166,6 +167,16 @@
}
/**
+ * This statically sets the max record size in {@link ID3v2Frame}
+ *
+ * @param maxRecordSize
+ */
+ @Field
+ public void setMaxRecordSize(int maxRecordSize) {
+ ID3v2Frame.setMaxRecordSize(maxRecordSize);
+ }
+
+ /**
* Scans the MP3 frames for ID3 tags, and creates ID3Tag Handlers
* for each supported set of tags.
*/
diff --git a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
index 83bbc0e..f952c84 100644
--- a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
+++ b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
@@ -335,7 +335,7 @@
* all content) a file with a very very large ID3 frame that
* has been truncated before the end of the ID3 tags.
* In this case, it is a file with JPEG data in the ID3, which
- * is trunacted before the end of the JPEG bit of the ID3 frame.
+ * is truncated before the end of the JPEG bit of the ID3 frame.
*/
@Test
public void testTIKA474() throws Exception {