Check size of "strf" header against size of enclosing "LIST" if there is one.
Originally committed as revision 19332 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
b098b30905
commit
5a4a4d7839
@ -252,6 +252,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
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 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
|
||||
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 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||
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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user