vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Sat May 24 16:49:36 2014 +0200| [b6b90af630decc3dc1fe7f21dd420a5ba53a45df] | committer: Francois Cartegnie
demux: mp4: fix reading stss/stsh > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b6b90af630decc3dc1fe7f21dd420a5ba53a45df --- modules/demux/mp4/libmp4.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 3e3716f..329d21d 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -2078,13 +2078,16 @@ static int MP4_ReadBox_stss( stream_t *p_stream, MP4_Box_t *p_box ) if( unlikely( p_box->data.p_stss->i_sample_number == NULL ) ) MP4_READBOX_EXIT( 0 ); - for( unsigned int i = 0; (i < p_box->data.p_stss->i_entry_count )&&( i_read >= 4 ); i++ ) + unsigned int i; + for( i = 0; (i < p_box->data.p_stss->i_entry_count )&&( i_read >= 4 ); i++ ) { MP4_GET4BYTES( p_box->data.p_stss->i_sample_number[i] ); /* XXX in libmp4 sample begin at 0 */ p_box->data.p_stss->i_sample_number[i]--; } + if ( i < p_box->data.p_stss->i_entry_count ) + p_box->data.p_stss->i_entry_count = i; #ifdef MP4_VERBOSE msg_Dbg( p_stream, "read box: \"stss\" entry-count %d", @@ -2125,11 +2128,14 @@ static int MP4_ReadBox_stsh( stream_t *p_stream, MP4_Box_t *p_box ) MP4_READBOX_EXIT( 0 ); } - for( unsigned i = 0; (i < p_box->data.p_stss->i_entry_count )&&( i_read >= 8 ); i++ ) + unsigned i; + for( i = 0; (i < p_box->data.p_stss->i_entry_count )&&( i_read >= 8 ); i++ ) { MP4_GET4BYTES( p_box->data.p_stsh->i_shadowed_sample_number[i] ); MP4_GET4BYTES( p_box->data.p_stsh->i_sync_sample_number[i] ); } + if ( i < p_box->data.p_stss->i_entry_count ) + p_box->data.p_stss->i_entry_count = i; #ifdef MP4_VERBOSE msg_Dbg( p_stream, "read box: \"stsh\" entry-count %d", _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits