Fix (yet another) TiVo demux overflow.
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Sat, 18 Oct 2008 19:19:49 +0000 (22:19 +0300)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Sat, 18 Oct 2008 19:21:55 +0000 (22:21 +0300)
Reported by Tobias Klein <tk@trapkit.de>

modules/demux/ty.c

index 754e235..65a408f 100644 (file)
@@ -1639,12 +1639,14 @@ static void parse_master(demux_t *p_demux)
     /* parse all the entries */
     p_sys->seq_table = malloc(p_sys->i_seq_table_size * sizeof(ty_seq_table_t));
     for (i=0; i<p_sys->i_seq_table_size; i++) {
-        stream_Read(p_demux->s, mst_buf, 8 + i_map_size);
+        stream_Read(p_demux->s, mst_buf, 8);
         p_sys->seq_table[i].l_timestamp = U64_AT(&mst_buf[0]);
         if (i_map_size > 8) {
             msg_Err(p_demux, "Unsupported SEQ bitmap size in master chunk");
+            stream_Read(p_demux->s, NULL, i_map_size);
             memset(p_sys->seq_table[i].chunk_bitmask, i_map_size, 0);
         } else {
+            stream_Read(p_demux->s, mst_buf + 8, i_map_size);
             memcpy(p_sys->seq_table[i].chunk_bitmask, &mst_buf[8], i_map_size);
         }
     }