patch: avoid crashes caused by corrupt mp3 files

Issue #238 resolved
Former user created an issue

File app/src/main/java/org/jaudiotagger/tag/id3/ID3v11Tag.java

--- a/app/src/main/java/org/jaudiotagger/tag/id3/ID3v11Tag.java
+++ b/app/src/main/java/org/jaudiotagger/tag/id3/ID3v11Tag.java
@@ -237,6 +237,10 @@ public class ID3v11Tag extends ID3v1Tag
         ByteBuffer byteBuffer = ByteBuffer.allocate(TAG_LENGTH);

         fc = file.getChannel();
+        if(file.length() < TAG_LENGTH)
+        {
+            throw new IOException("File not large enough to contain a tag");
+        }
         fc.position(file.length() - TAG_LENGTH);

         fc.read(byteBuffer);

File app/src/main/java/org/jaudiotagger/tag/id3/ID3v1Tag.java

--- a/app/src/main/java/org/jaudiotagger/tag/id3/ID3v1Tag.java
+++ b/app/src/main/java/org/jaudiotagger/tag/id3/ID3v1Tag.java
@@ -189,6 +189,10 @@ public class ID3v1Tag extends AbstractID3v1Tag implements Tag
         ByteBuffer byteBuffer;

         fc = file.getChannel();
+        if(file.length() < TAG_LENGTH)
+        {
+            throw new IOException("File not large enough to contain a tag");
+        }
         fc.position(file.length() - TAG_LENGTH);
         byteBuffer = ByteBuffer.allocate(TAG_LENGTH);
         fc.read(byteBuffer);

File app/src/main/java/org/jaudiotagger/tag/id3/AbstractID3v1Tag.java

--- a/app/src/main/java/org/jaudiotagger/tag/id3/AbstractID3v1Tag.java
+++ b/app/src/main/java/org/jaudiotagger/tag/id3/AbstractID3v1Tag.java
@@ -129,7 +129,7 @@ abstract public class AbstractID3v1Tag extends AbstractID3Tag

         if(file.length() < TAG_LENGTH)
         {
-            throw new IOException("File not not appear large enough to contain a tag");
+            throw new IOException("File not large enough to contain a tag");
         }
         fc.position(file.length() - TAG_LENGTH);
         byteBuffer = ByteBuffer.allocate(TAG_LENGTH);

Comments (1)

  1. Log in to comment