[vlc-commits] demux: ts: fix IOD parsing (fix #11573)

Francois Cartegnie git at videolan.org
Fri Jun 6 21:44:49 CEST 2014


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Jun  6 21:41:39 2014 +0200| [b557f55da6d3cd8b18cba9f1771dd888aaab6f7e] | committer: Francois Cartegnie

demux: ts: fix IOD parsing (fix #11573)

IOD bytes must be read in order.
introduced by 8fdf1f20beb53ec72b7f2a903071857596ce0d72

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b557f55da6d3cd8b18cba9f1771dd888aaab6f7e
---

 modules/demux/ts.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/demux/ts.c b/modules/demux/ts.c
index c22c266..e882623 100644
--- a/modules/demux/ts.c
+++ b/modules/demux/ts.c
@@ -2625,6 +2625,7 @@ static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
             ts_debug( "\n* ERR missing DecoderConfigDescr" );
             continue;
         }
+        int i_config_desc_length = IODDescriptorLength( &i_data, &p_data ); /* DecoderConfigDescr_length */
         decoder_config_descriptor_t *dec_descr = &es_descr->dec_descr;
         dec_descr->i_objectTypeIndication = IODGetBytes( &i_data, &p_data, 1 );
         i_flags = IODGetBytes( &i_data, &p_data, 1 );
@@ -2634,8 +2635,7 @@ static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
         IODGetBytes( &i_data, &p_data, 4); /* maxBitrate */
         IODGetBytes( &i_data, &p_data, 4 ); /* avgBitrate */
 
-        int i_decoderConfigDescr_length = IODDescriptorLength( &i_data, &p_data );
-        if( i_decoderConfigDescr_length > 13 && IODGetBytes( &i_data, &p_data, 1 ) == 0x05 )
+        if( i_config_desc_length > 13 && IODGetBytes( &i_data, &p_data, 1 ) == 0x05 )
         {
             dec_descr->i_extra = IODDescriptorLength( &i_data, &p_data );
             if( dec_descr->i_extra > 0 )



More information about the vlc-commits mailing list