diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-09-27 11:21:13 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-09-27 11:21:13 +0000 |
commit | 47b5a39d389a943a6e52d6338714b3ae36afaa47 (patch) | |
tree | 4d2dfad67f428e52cbe6091fe7aa296055c95035 /libmpdemux | |
parent | e5352c35b6cb48b7c7d6599f5822930ce7f31900 (diff) |
Sanity-check codecdata_len, fixes crash in libfaad due to failed malloc for
http://images.apple.com/movies/us/hd_gallery/gl1800/480p/the_brothers_grimm_m480pa.mov
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16612 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/demux_mov.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c index d3c972ccb8..3700bb2709 100644 --- a/libmpdemux/demux_mov.c +++ b/libmpdemux/demux_mov.c @@ -662,6 +662,7 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak // 32 char[4] atom type (fourc charater code -> esds) // 36 char[] atom data (len=size-8) +// TODO: fix parsing for files using version 2. trak->samplebytes=sh->samplesize=char2short(trak->stdata,18)/8; trak->nchannels=sh->channels=char2short(trak->stdata,16); /*printf("MOV: timescale: %d samplerate: %d durmap: %d (%d) -> %d (%d)\n", @@ -711,8 +712,10 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak sh->codecdata = (unsigned char *)malloc(sh->codecdata_len); memcpy(sh->codecdata, &trak->stdata[52+char2int(trak->stdata,52)], sh->codecdata_len); } else { + if (len > 8 && len + 44 < trak->stdata_len) { sh->codecdata_len = len-8; sh->codecdata = trak->stdata+44+8; + } } } } |