From: Francois Cartegnie Date: Mon, 23 Mar 2015 22:38:12 +0000 (+0100) Subject: demux: avi: improve broken index offset heuristic (fix #14120) X-Git-Url: https://git.sesse.net/?p=vlc;a=commitdiff_plain;h=039c69d648bd9bb481fbd29868b8565952098d70 demux: avi: improve broken index offset heuristic (fix #14120) Avoids using movi position as offset when the broken index refers to beginning of file and the first sample size is exactly movi's offset. --- diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c index 0a35b42269..34a3362181 100644 --- a/modules/demux/avi/avi.c +++ b/modules/demux/avi/avi.c @@ -2321,11 +2321,22 @@ static int AVI_IndexFind_idx1( demux_t *p_demux, *pi_offset = 0; else *pi_offset = i_movi_content; + + if( p_idx1->i_entry_count ) + { + /* Invalidate offset if index refers past the data section to avoid false + positives when the offset equals sample size */ + size_t i_dataend = *pi_offset + p_idx1->entry[p_idx1->i_entry_count - 1].i_pos + + p_idx1->entry[p_idx1->i_entry_count - 1].i_length; + if( i_dataend > p_movi->i_chunk_pos + p_movi->i_chunk_size ) + *pi_offset = 0; + } } else { *pi_offset = 0; } + return VLC_SUCCESS; }