Index: tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java
===================================================================
--- tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java	(revision 945563)
+++ tika-parsers/src/main/java/org/apache/tika/parser/mp3/ID3v2Frame.java	(working copy)
@@ -171,9 +171,12 @@
      */
     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
Index: tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java
===================================================================
--- tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java	(revision 945563)
+++ tika-parsers/src/test/java/org/apache/tika/parser/mp3/Mp3ParserTest.java	(working copy)
@@ -149,5 +149,9 @@
        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));
     }
 }
