summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2011-01-30 10:38:10 +0000
committerUoti Urpala <uau@glyph.nonexistent.invalid>2011-02-15 18:47:03 +0200
commit851bb3ce825a250b257c174eae334e239c431eb2 (patch)
tree72c7c893633d4f9fec26bb2c7a33019606fce5e2
parent179cb785e98ba980d0c64fc16922122d427c1554 (diff)
downloadmpv-851bb3ce825a250b257c174eae334e239c431eb2.tar.bz2
mpv-851bb3ce825a250b257c174eae334e239c431eb2.tar.xz
demux_asf: add sanity check
Check that rlen is valid before using it to increment a pointer. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32832 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--libmpdemux/demux_asf.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libmpdemux/demux_asf.c b/libmpdemux/demux_asf.c
index ffbbe0305f..aef2f5ece0 100644
--- a/libmpdemux/demux_asf.c
+++ b/libmpdemux/demux_asf.c
@@ -468,6 +468,10 @@ static int demux_asf_fill_buffer(demuxer_t *demux, demux_stream_t *ds){
rlen = read_varlen(&p, segtype, 0);
// printf("### rlen=%d \n",rlen);
+ if (rlen < 0 || rlen > p_end - p) {
+ mp_msg(MSGT_DEMUX, MSGL_V, "invalid rlen=%d\n", rlen);
+ break;
+ }
switch(rlen){
case 0x01: // 1 = special, means grouping