From: RĂ©mi Denis-Courmont Date: Sun, 8 Aug 2010 15:50:47 +0000 (+0300) Subject: dvdnav: ps_pkt_size() requires at least 6 bytes (fixes #4015) X-Git-Tag: 1.2.0-pre1~5537 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=8a497301054ccc2d9d470ade60264036d43e3fc0;p=vlc dvdnav: ps_pkt_size() requires at least 6 bytes (fixes #4015) The same check is already done in the dvdread, ps and vobsub modules. --- diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c index bde94d79de..71df3a2542 100644 --- a/modules/access/dvdnav.c +++ b/modules/access/dvdnav.c @@ -1129,17 +1129,17 @@ static int DemuxBlock( demux_t *p_demux, const uint8_t *pkt, int i_pkt ) demux_sys_t *p_sys = p_demux->p_sys; const uint8_t *p = pkt; - while( p < &pkt[i_pkt] ) + while( (p - pkt) <= (i_pkt - 6) ) { + /* ps_pkt_size() needs at least 6 bytes */ int i_size = ps_pkt_size( p, &pkt[i_pkt] - p ); - block_t *p_pkt; if( i_size <= 0 ) { break; } /* Create a block */ - p_pkt = block_New( p_demux, i_size ); + block_t *p_pkt = block_New( p_demux, i_size ); memcpy( p_pkt->p_buffer, p, i_size); /* Parse it and send it */