summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-12-12 14:31:17 +0000
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-12-16 06:22:19 +0200
commit7e24b8edb42fd8dc39b273772642a4d23866552f (patch)
tree9c23900ae54e02762b7b0a9c6e93ce9afedd7619 /libmpdemux
parent05fa96c6dce2da63d0c1f55b79e2e532df786523 (diff)
downloadmpv-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.c4
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);