diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2019-11-17 08:34:36 +0100 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2019-11-17 23:31:45 +0000 |
commit | cda3e8ca04c0e343f5b60fda8fb467936e176f33 (patch) | |
tree | c5982250e6354efee8023ae2776582d20d37c866 /libavcodec/cbs_mpeg2.c | |
parent | 7c92eaace2b338e0b3acc18e1543b365610578fd (diff) | |
download | ffmpeg-cda3e8ca04c0e343f5b60fda8fb467936e176f33.tar.gz |
avcodec/cbs: Fix potential overflow
The number of bits in a PutBitContext must fit into an int, yet nothing
guaranteed the size argument cbs_write_unit_data() uses in init_put_bits()
to be in the range 0..INT_MAX / 8. This has been changed.
Furthermore, the check 8 * data_size > data_bit_start that there is
data beyond the initial padding when writing mpeg2 or H.264/5 slices
could also overflow, so divide it by 8 to get an equivalent check
without this problem.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec/cbs_mpeg2.c')
-rw-r--r-- | libavcodec/cbs_mpeg2.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c index a9cc4a4cf8..13d871cc89 100644 --- a/libavcodec/cbs_mpeg2.c +++ b/libavcodec/cbs_mpeg2.c @@ -337,7 +337,7 @@ static int cbs_mpeg2_write_slice(CodedBitstreamContext *ctx, uint8_t *pos = slice->data + slice->data_bit_start / 8; av_assert0(slice->data_bit_start >= 0 && - 8 * slice->data_size > slice->data_bit_start); + slice->data_size > slice->data_bit_start / 8); if (slice->data_size * 8 + 8 > put_bits_left(pbc)) return AVERROR(ENOSPC); |