vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Jul 9 14:38:44 2019 +0200| [55febc1e137d4f7ae0683d287594de5ebe93d468] | committer: Francois Cartegnie
demux: avi: continue parsing list on empty box some broken files have empty strf between 2 strh refs V_CODECS/qnap/2010-10-15 14-02-00~14-04-00.avi > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=55febc1e137d4f7ae0683d287594de5ebe93d468 --- modules/demux/avi/libavi.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/demux/avi/libavi.c b/modules/demux/avi/libavi.c index 5b2ad45ef1..ba35a3f88a 100644 --- a/modules/demux/avi/libavi.c +++ b/modules/demux/avi/libavi.c @@ -207,12 +207,17 @@ static int AVI_ChunkRead_list( stream_t *s, avi_chunk_t *p_container ) { AVI_ChunkClean( s, p_chk ); free( p_chk ); - break; + p_chk = NULL; + if( i_ret != AVI_ZEROSIZED_CHUNK ) + break; } - *pp_append = p_chk; - while( *pp_append ) - pp_append = &((*pp_append)->common.p_next); + if( p_chk ) + { + *pp_append = p_chk; + while( *pp_append ) + pp_append = &((*pp_append)->common.p_next); + } if( p_container->common.i_chunk_size > 0 && vlc_stream_Tell( s ) >= AVI_ChunkEnd( p_container ) ) @@ -221,7 +226,8 @@ static int AVI_ChunkRead_list( stream_t *s, avi_chunk_t *p_container ) } /* If we can't seek then stop when we 've found LIST-movi */ - if( p_chk->common.i_chunk_fourcc == AVIFOURCC_LIST && + if( p_chk && + p_chk->common.i_chunk_fourcc == AVIFOURCC_LIST && p_chk->list.i_type == AVIFOURCC_movi && ( !b_seekable || p_chk->common.i_chunk_size == 0 ) ) { _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
