Mercurial > libavformat.hg
changeset 5087:5de39afaca2e libavformat
Check size of "strf" header against size of enclosing "LIST" if there is one.
author | reimar |
---|---|
date | Fri, 03 Jul 2009 11:26:14 +0000 |
parents | 5e6156776ee2 |
children | 5da0e7ccc3c4 |
files | avidec.c |
diffstat | 1 files changed, 5 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/avidec.c Fri Jul 03 11:18:56 2009 +0000 +++ b/avidec.c Fri Jul 03 11:26:14 2009 +0000 @@ -252,6 +252,7 @@ AVIStream *ast = NULL; int avih_width=0, avih_height=0; int amv_file_format=0; + uint64_t list_end = 0; avi->stream_index= -1; @@ -277,6 +278,7 @@ switch(tag) { case MKTAG('L', 'I', 'S', 'T'): + list_end = url_ftell(pb) + size; /* Ignored, except at start of video packets. */ tag1 = get_le32(pb); #ifdef DEBUG @@ -445,6 +447,9 @@ if (stream_index >= (unsigned)s->nb_streams || avi->dv_demux) { url_fskip(pb, size); } else { + uint64_t cur_pos = url_ftell(pb); + if (cur_pos < list_end) + size = FFMIN(size, list_end - cur_pos); st = s->streams[stream_index]; switch(codec_type) { case CODEC_TYPE_VIDEO: