Browse Source

lavf/id3v2: seek back to previous offset if header size is not matched

Makes ff_id3v2_read reset stream position at the end of ID3 data if the
header size is not matched (caused by an EOF for example).

Current behaviour (without the patch):
    filesize = 400
    id3 data size = 399
    file offset after ff_id3v2_read is 400 instead of 399

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n1.2
Matthieu Bouron Michael Niedermayer 12 years ago
parent
commit
b3b456b258
1 changed files with 3 additions and 1 deletions
  1. +3
    -1
      libavformat/id3v2.c

+ 3
- 1
libavformat/id3v2.c View File

@@ -788,8 +788,10 @@ void ff_id3v2_read(AVFormatContext *s, const char *magic, ID3v2ExtraMeta **extra
/* save the current offset in case there's nothing to read/skip */
off = avio_tell(s->pb);
ret = avio_read(s->pb, buf, ID3v2_HEADER_SIZE);
if (ret != ID3v2_HEADER_SIZE)
if (ret != ID3v2_HEADER_SIZE) {
avio_seek(s->pb, off, SEEK_SET);
break;
}
found_header = ff_id3v2_match(buf, magic);
if (found_header) {
/* parse ID3v2 header */


Loading…
Cancel
Save