diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-12-12 14:31:17 +0000 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-12-16 06:22:19 +0200 |
commit | 7e24b8edb42fd8dc39b273772642a4d23866552f (patch) | |
tree | 9c23900ae54e02762b7b0a9c6e93ce9afedd7619 /libmpdemux | |
parent | 05fa96c6dce2da63d0c1f55b79e2e532df786523 (diff) | |
download | mpv-7e24b8edb42fd8dc39b273772642a4d23866552f.tar.bz2 mpv-7e24b8edb42fd8dc39b273772642a4d23866552f.tar.xz |
aviheader.c: avoid using uninitialized data in an error case
Avoid using uninitialized data if index read does not return enough data.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32707 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/aviheader.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libmpdemux/aviheader.c b/libmpdemux/aviheader.c index 1d52428c42..27d2fd5fdb 100644 --- a/libmpdemux/aviheader.c +++ b/libmpdemux/aviheader.c @@ -377,13 +377,15 @@ while(1){ if(demuxer->movi_end>stream_tell(demuxer->stream)) demuxer->movi_end=stream_tell(demuxer->stream); // fixup movi-end if(index_mode && !priv->isodml){ + int read; int i; priv->idx_size=size2>>4; mp_tmsg(MSGT_HEADER,MSGL_V,"Reading INDEX block, %d chunks for %d frames (fpos=%"PRId64").\n", priv->idx_size,avih.dwTotalFrames, (int64_t)stream_tell(demuxer->stream)); priv->idx=malloc(priv->idx_size<<4); // printf("\nindex to %p !!!!! (priv=%p)\n",priv->idx,priv); - stream_read(demuxer->stream,(char*)priv->idx,priv->idx_size<<4); + read = stream_read(demuxer->stream,(char*)priv->idx,priv->idx_size<<4); + priv->idx_size = FFMAX(read, 0) >> 4; for (i = 0; i < priv->idx_size; i++) { // swap index to machine endian AVIINDEXENTRY *entry=(AVIINDEXENTRY*)priv->idx + i; le2me_AVIINDEXENTRY(entry); |