Skip padding in an id3 tag in aiff files.

Fixes ticket #2430.

Reviewed-by: Matthieu Bouron
This commit is contained in:
Carl Eugen Hoyos 2013-04-03 15:45:46 +02:00
parent c208576cef
commit db2d3a9082

View File

@ -192,7 +192,7 @@ static int aiff_probe(AVProbeData *p)
static int aiff_read_header(AVFormatContext *s) static int aiff_read_header(AVFormatContext *s)
{ {
int ret, size, filesize; int ret, size, filesize;
int64_t offset = 0; int64_t offset = 0, position;
uint32_t tag; uint32_t tag;
unsigned version = AIFF_C_VERSION1; unsigned version = AIFF_C_VERSION1;
AVIOContext *pb = s->pb; AVIOContext *pb = s->pb;
@ -236,6 +236,7 @@ static int aiff_read_header(AVFormatContext *s)
goto got_sound; goto got_sound;
break; break;
case MKTAG('I', 'D', '3', ' '): case MKTAG('I', 'D', '3', ' '):
position = avio_tell(pb);
ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta);
if (id3v2_extra_meta) if (id3v2_extra_meta)
if ((ret = ff_id3v2_parse_apic(s, &id3v2_extra_meta)) < 0) { if ((ret = ff_id3v2_parse_apic(s, &id3v2_extra_meta)) < 0) {
@ -243,6 +244,8 @@ static int aiff_read_header(AVFormatContext *s)
return ret; return ret;
} }
ff_id3v2_free_extra_meta(&id3v2_extra_meta); ff_id3v2_free_extra_meta(&id3v2_extra_meta);
if (position + size > avio_tell(pb))
avio_skip(pb, position + size - avio_tell(pb));
break; break;
case MKTAG('F', 'V', 'E', 'R'): /* Version chunk */ case MKTAG('F', 'V', 'E', 'R'): /* Version chunk */
version = avio_rb32(pb); version = avio_rb32(pb);