summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-01-04 22:47:28 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2013-01-04 22:47:28 +0100
commit9676ffae34f4f460e761f7131a26a8258977553d (patch)
tree80e3c027e17e5fc82e72fd87be7271d33c42617b
parentaa630554dd2a727729fb079154857acb321352e5 (diff)
downloadAntennaPod-9676ffae34f4f460e761f7131a26a8258977553d.zip
Skip rest of tag header if size of frame is too big
-rw-r--r--src/de/danoeh/antennapod/util/id3reader/ID3Reader.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/de/danoeh/antennapod/util/id3reader/ID3Reader.java b/src/de/danoeh/antennapod/util/id3reader/ID3Reader.java
index 6bdb4ef0f..59631f06e 100644
--- a/src/de/danoeh/antennapod/util/id3reader/ID3Reader.java
+++ b/src/de/danoeh/antennapod/util/id3reader/ID3Reader.java
@@ -4,6 +4,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.PushbackInputStream;
+import org.apache.commons.io.IOUtils;
+
import de.danoeh.antennapod.util.id3reader.model.FrameHeader;
import de.danoeh.antennapod.util.id3reader.model.TagHeader;
@@ -48,7 +50,13 @@ public class ID3Reader {
} else {
rc = onStartFrameHeader(frameHeader, input);
if (rc == ACTION_SKIP) {
- skipBytes(input, frameHeader.getSize());
+
+ if (frameHeader.getSize() + readerPosition > tagHeader
+ .getSize()) {
+ break;
+ } else {
+ skipBytes(input, frameHeader.getSize());
+ }
}
}
}
@@ -100,13 +108,10 @@ public class ID3Reader {
* changes the readerPosition-attribute.
*/
protected void skipBytes(InputStream input, int number) throws IOException {
- int skipped = 0;
if (number <= 0) {
number = 1;
}
- while (skipped < number) {
- skipped += input.skip(number - skipped);
- }
+ IOUtils.skipFully(input, number);
readerPosition += number;
}