diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-04-03 15:45:46 +0200 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-04-03 15:45:46 +0200 |
commit | db2d3a90825025b2f5da85792e1df33280c61391 (patch) | |
tree | da07a169b3135b87839096df3c786847ee638e23 | |
parent | c208576cef0a97903bbeac4f580fa436605a5c3e (diff) | |
download | ffmpeg-db2d3a90825025b2f5da85792e1df33280c61391.tar.gz |
Skip padding in an id3 tag in aiff files.
Fixes ticket #2430.
Reviewed-by: Matthieu Bouron
-rw-r--r-- | libavformat/aiffdec.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c index 8d466fa815..4a2629888b 100644 --- a/libavformat/aiffdec.c +++ b/libavformat/aiffdec.c @@ -192,7 +192,7 @@ static int aiff_probe(AVProbeData *p) static int aiff_read_header(AVFormatContext *s) { int ret, size, filesize; - int64_t offset = 0; + int64_t offset = 0, position; uint32_t tag; unsigned version = AIFF_C_VERSION1; AVIOContext *pb = s->pb; @@ -236,6 +236,7 @@ static int aiff_read_header(AVFormatContext *s) goto got_sound; break; case MKTAG('I', 'D', '3', ' '): + position = avio_tell(pb); ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); if (id3v2_extra_meta) if ((ret = ff_id3v2_parse_apic(s, &id3v2_extra_meta)) < 0) { @@ -243,6 +244,8 @@ static int aiff_read_header(AVFormatContext *s) return ret; } ff_id3v2_free_extra_meta(&id3v2_extra_meta); + if (position + size > avio_tell(pb)) + avio_skip(pb, position + size - avio_tell(pb)); break; case MKTAG('F', 'V', 'E', 'R'): /* Version chunk */ version = avio_rb32(pb); |