]> git.sesse.net Git - vlc/commitdiff
dvdnav: ps_pkt_size() requires at least 6 bytes (fixes #4015)
authorRémi Denis-Courmont <remi@remlab.net>
Sun, 8 Aug 2010 15:50:47 +0000 (18:50 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Sun, 8 Aug 2010 15:51:41 +0000 (18:51 +0300)
The same check is already done in the dvdread, ps and vobsub modules.

modules/access/dvdnav.c

index bde94d79debe1cac65961308b268a8bcec3de010..71df3a2542d50c2ac2082f57104cd9a70a302f2b 100644 (file)
@@ -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 */