You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
svq3: fix the slice size check
Currently it incorrectly compares bits with bytes. Also, move the check right before where it's relevant, so that the correct number of remaining bits is used. CC: libav-stable@libav.org
This commit is contained in:
@@ -1031,17 +1031,16 @@ static int svq3_decode_slice_header(AVCodecContext *avctx)
|
||||
slice_bits = slice_length * 8;
|
||||
slice_bytes = slice_length + length - 1;
|
||||
|
||||
if (slice_bytes > bitstream_bits_left(&s->bc)) {
|
||||
av_log(avctx, AV_LOG_ERROR, "slice after bitstream end\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
bitstream_skip(&s->bc, 8);
|
||||
|
||||
av_fast_malloc(&s->slice_buf, &s->slice_size, slice_bytes + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!s->slice_buf)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
if (slice_bytes * 8 > bitstream_bits_left(&s->bc)) {
|
||||
av_log(avctx, AV_LOG_ERROR, "slice after bitstream end\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
memcpy(s->slice_buf, s->bc.buffer + bitstream_tell(&s->bc) / 8, slice_bytes);
|
||||
|
||||
if (s->watermark_key) {
|
||||
|
Reference in New Issue
Block a user