]> git.sesse.net Git - vlc/commitdiff
Fixed signed integer overflow when loading AVI ODML index.
authorLaurent Aimar <fenrir@videolan.org>
Tue, 23 Feb 2010 21:43:20 +0000 (22:43 +0100)
committerLaurent Aimar <fenrir@videolan.org>
Tue, 23 Feb 2010 23:11:48 +0000 (00:11 +0100)
modules/demux/avi/avi.c
modules/demux/avi/libavi.h

index c1c6a7acec857a1bbc26006c269a31213a3ed147..eacfba937d28359e348976bdfa832e25e2e15039 100644 (file)
@@ -2180,12 +2180,11 @@ static void __Parse_indx( demux_t    *p_demux,
 {
     demux_sys_t         *p_sys    = p_demux->p_sys;
     avi_entry_t     index;
-    int32_t             i;
 
     msg_Dbg( p_demux, "loading subindex(0x%x) %d entries", p_indx->i_indextype, p_indx->i_entriesinuse );
     if( p_indx->i_indexsubtype == 0 )
     {
-        for( i = 0; i < p_indx->i_entriesinuse; i++ )
+        for( unsigned i = 0; i < p_indx->i_entriesinuse; i++ )
         {
             index.i_id      = p_indx->i_id;
             index.i_flags   = p_indx->idx.std[i].i_size & 0x80000000 ? 0 : AVIIF_KEYFRAME;
@@ -2197,7 +2196,7 @@ static void __Parse_indx( demux_t    *p_demux,
     }
     else if( p_indx->i_indexsubtype == AVI_INDEX_2FIELD )
     {
-        for( i = 0; i < p_indx->i_entriesinuse; i++ )
+        for( unsigned i = 0; i < p_indx->i_entriesinuse; i++ )
         {
             index.i_id      = p_indx->i_id;
             index.i_flags   = p_indx->idx.field[i].i_size & 0x80000000 ? 0 : AVIIF_KEYFRAME;
@@ -2217,7 +2216,6 @@ static void AVI_IndexLoad_indx( demux_t *p_demux )
 {
     demux_sys_t         *p_sys = p_demux->p_sys;
     unsigned int        i_stream;
-    int32_t             i;
 
     avi_chunk_list_t    *p_riff;
     avi_chunk_list_t    *p_hdrl;
@@ -2248,7 +2246,7 @@ static void AVI_IndexLoad_indx( demux_t *p_demux )
         else if( p_indx->i_indextype == AVI_INDEX_OF_INDEXES )
         {
             avi_chunk_t    ck_sub;
-            for( i = 0; i < p_indx->i_entriesinuse; i++ )
+            for( unsigned i = 0; i < p_indx->i_entriesinuse; i++ )
             {
                 if( stream_Seek( p_demux->s, p_indx->idx.super[i].i_offset )||
                     AVI_ChunkRead( p_demux->s, &ck_sub, NULL  ) )
index a4b88fa7747a427d341c3741751b2b3c748ac6c5..a9510c4ed5d2ba0e1adaf9af965394da67742079 100644 (file)
@@ -174,10 +174,10 @@ typedef struct
 typedef struct avi_chunk_indx_s
 {
     AVI_CHUNK_COMMON
-    int16_t i_longsperentry;
-    int8_t  i_indexsubtype;
-    int8_t  i_indextype;
-    int32_t i_entriesinuse;
+    int16_t  i_longsperentry;
+    int8_t   i_indexsubtype;
+    int8_t   i_indextype;
+    uint32_t i_entriesinuse;
     vlc_fourcc_t i_id;
 
     int64_t i_baseoffset;