You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ju...@apache.org on 2010/05/26 12:21:56 UTC

svn commit: r948385 - in /tika/trunk/tika-parsers/src: main/java/org/apache/tika/parser/mp3/ID3v2Frame.java test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java

Author: jukka
Date: Wed May 26 10:21:56 2010
New Revision: 948385

URL: http://svn.apache.org/viewvc?rev=948385&view=rev
Log:
TIKA-424: Avoid ArrayIndexOutOfBoundsException on some mp3 files

Patch by Nick Burch

Modified:
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java?rev=948385&r1=948384&r2=948385&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java Wed May 26 10:21:56 2010
@@ -171,9 +171,12 @@ public class ID3v2Frame implements MP3Fr
      */
     protected static String getTagString(byte[] data, int offset, int length) {
         int actualLength = length;
-        while (data[actualLength-1] == 0) {
+        while (actualLength > 0 && data[actualLength-1] == 0) {
             actualLength--;
         }
+        if (actualLength == 0) {
+            return "";
+        }
 
         // Does it have an encoding flag?
         // Detect by the first byte being sub 0x20

Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java?rev=948385&r1=948384&r2=948385&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java (original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java Wed May 26 10:21:56 2010
@@ -149,5 +149,9 @@ public class Mp3ParserTest extends TestC
        assertEquals(0, f.getFlags());
        assertEquals(0, f.getLength());
        assertEquals(0, f.getData().length);
+       
+       assertEquals("", ID3v2Frame.getTagString(f.getData(), 0, 0));
+       assertEquals("", ID3v2Frame.getTagString(new byte[] {0,0,0,0}, 0, 3));
+       assertEquals("A", ID3v2Frame.getTagString(new byte[] {(byte)'A',0,0,0}, 0, 3));
     }
 }