[FFmpeg-devel] [PATCH] lavf/aiffdec: handle files with ID3 data larger than ID3 chunk size
Michael Niedermayer
michaelni at gmx.at
Wed Jan 16 02:37:19 CET 2013
On Wed, Jan 16, 2013 at 01:18:09AM +0100, Matthieu Bouron wrote:
> On Wed, Jan 16, 2013 at 12:34:31AM +0100, Michael Niedermayer wrote:
> > On Tue, Jan 15, 2013 at 10:49:01PM +0100, Matthieu Bouron wrote:
> > > ---
> > > libavformat/aiffdec.c | 7 +++++++
> > > 1 file changed, 7 insertions(+)
> > >
> > > diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c
> > > index 8d466fa..b6a7946 100644
> > > --- a/libavformat/aiffdec.c
> > > +++ b/libavformat/aiffdec.c
> > > @@ -193,6 +193,7 @@ static int aiff_read_header(AVFormatContext *s)
> > > {
> > > int ret, size, filesize;
> > > int64_t offset = 0;
> > > + int64_t tag_size, tag_offset;
> > > uint32_t tag;
> > > unsigned version = AIFF_C_VERSION1;
> > > AVIOContext *pb = s->pb;
> > > @@ -236,6 +237,7 @@ static int aiff_read_header(AVFormatContext *s)
> > > goto got_sound;
> > > break;
> > > case MKTAG('I', 'D', '3', ' '):
> > > + tag_offset = 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 +245,11 @@ static int aiff_read_header(AVFormatContext *s)
> > > return ret;
> > > }
> > > ff_id3v2_free_extra_meta(&id3v2_extra_meta);
> > > + tag_size = avio_tell(pb) - tag_offset;
> > > + if (tag_size > size) {
> > > + av_log(s, AV_LOG_WARNING, "ID3 data is larger than ID3 chunk size\n");
> > > + avio_seek(pb, tag_size - size, SEEK_SET);
> > > + }
> >
> > to which point do you try to seek here ?
> > this looks like you try to do a absolute seek with a relative value
> >
>
> Sorry for the messy patch :(, I didn't intend to seek anywhere but
> just to decrease the filesize variable according to the difference
> between tag_size and size.
> New patch attached.
so when the sizes mismatch a correct tag is at position after the
larger size ?
Iam trying to make sure that theres no failure in the ID3 parsing
that causes the size mismatch ...
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Concerning the gods, I have no means of knowing whether they exist or not
or of what sort they may be, because of the obscurity of the subject, and
the brevity of human life -- Protagoras
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130116/f5a2b92d/attachment.asc>
More information about the ffmpeg-devel
mailing list