From bca6dee386307e4f3646632d98a9db87ce9de249 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 17 Mar 2011 07:10:23 +0100 Subject: [PATCH] id3v2: explicitly seek to the end of the tag after reading Current code might stop in the middle of an invalid tag. fixes issue2650 Signed-off-by: Ronald S. Bultje --- libavformat/id3v2.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index bb360202fc..fb4c761a27 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -186,7 +186,7 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t { int isv34, tlen, unsync; char tag[5]; - int64_t next; + int64_t next, end = avio_tell(s->pb) + len; int taghdrlen; const char *reason; AVIOContext pb; @@ -284,8 +284,9 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t avio_skip(s->pb, len); } if (version == 4 && flags & 0x10) /* Footer preset, always 10 bytes, skip over it */ - avio_skip(s->pb, 10); + end += 10; + avio_seek(s->pb, end, SEEK_SET); av_free(buffer); return;