mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avformat/vividas: Check packet size
Fixes: signed integer overflow: 119760682 - -2084600173 cannot be represented in type 'int' Fixes: 50993/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-6745781167587328 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
c5f61c99f9
commit
5f44489cc5
@ -683,6 +683,7 @@ static int viv_read_packet(AVFormatContext *s,
|
||||
|
||||
if (viv->sb_entries[viv->current_sb_entry].flag == 0) {
|
||||
uint64_t v_size = ffio_read_varlen(pb);
|
||||
int last = 0, last_start;
|
||||
|
||||
if (!viv->num_audio)
|
||||
return AVERROR_INVALIDDATA;
|
||||
@ -706,12 +707,18 @@ static int viv_read_packet(AVFormatContext *s,
|
||||
|
||||
if (i > 0 && start == 0)
|
||||
break;
|
||||
if (start < last)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
viv->n_audio_subpackets = i + 1;
|
||||
last =
|
||||
viv->audio_subpackets[i].start = start;
|
||||
viv->audio_subpackets[i].pcm_bytes = pcm_bytes;
|
||||
}
|
||||
last_start =
|
||||
viv->audio_subpackets[viv->n_audio_subpackets].start = (int)(off - avio_tell(pb));
|
||||
if (last_start < last)
|
||||
return AVERROR_INVALIDDATA;
|
||||
viv->current_audio_subpacket = 0;
|
||||
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user