Handle chunks with the MSB in size set correctly that is unsigned.

Originally committed as revision 17491 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2009-02-21 20:11:34 +00:00
parent 96c3da93e6
commit f5007cc844
1 changed files with 4 additions and 3 deletions

View File

@ -643,12 +643,13 @@ static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
{ {
AVIContext *avi = s->priv_data; AVIContext *avi = s->priv_data;
ByteIOContext *pb = s->pb; ByteIOContext *pb = s->pb;
int n, d[8], size; int n, d[8];
unsigned int size;
int64_t i, sync; int64_t i, sync;
void* dstr; void* dstr;
if (CONFIG_DV_DEMUXER && avi->dv_demux) { if (CONFIG_DV_DEMUXER && avi->dv_demux) {
size = dv_get_packet(avi->dv_demux, pkt); int size = dv_get_packet(avi->dv_demux, pkt);
if (size >= 0) if (size >= 0)
return size; return size;
} }
@ -788,7 +789,7 @@ resync:
n= get_stream_idx(d+2); n= get_stream_idx(d+2);
//av_log(s, AV_LOG_DEBUG, "%X %X %X %X %X %X %X %X %"PRId64" %d %d\n", d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], i, size, n); //av_log(s, AV_LOG_DEBUG, "%X %X %X %X %X %X %X %X %"PRId64" %d %d\n", d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], i, size, n);
if(i + size > avi->fsize || d[0]<0) if(i + (uint64_t)size > avi->fsize || d[0]<0)
continue; continue;
//parse ix## //parse ix##