mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-04 09:11:33 +02:00
Fixed signed integer overflow when loading AVI ODML index.
This commit is contained in:
parent
07f608d11e
commit
8e16fb45f4
@ -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 ) )
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user