diff options
author | Anton Khirnov <anton@khirnov.net> | 2011-03-17 07:10:23 +0100 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2011-03-21 14:56:59 -0400 |
commit | bca6dee386307e4f3646632d98a9db87ce9de249 (patch) | |
tree | f865769f272cbc4ae622578ef9356c90809b0dc0 /libavformat | |
parent | 933e90a69a4b9c558d4fae9dffb15378910481d3 (diff) | |
download | ffmpeg-bca6dee386307e4f3646632d98a9db87ce9de249.tar.gz |
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 <rsbultje@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/id3v2.c | 5 |
1 files 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; |