You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
avcodec/vc1dec: return value check for init_get_bits
As the second argument for init_get_bits(avctx and buf) can be crafted, a return value check for this function call is necessary, so replace init_get_bits with init_get_bits8 and add return value check.
This commit is contained in:
committed by
Paul B Mahol
parent
f9fbe2f9a9
commit
3e24e8108d
@@ -444,7 +444,9 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx)
|
|||||||
// the last byte of the extradata is a version number, 1 for the
|
// the last byte of the extradata is a version number, 1 for the
|
||||||
// samples we can decode
|
// samples we can decode
|
||||||
|
|
||||||
init_get_bits(&gb, avctx->extradata, avctx->extradata_size*8);
|
ret = init_get_bits8(&gb, avctx->extradata, avctx->extradata_size);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if ((ret = ff_vc1_decode_sequence_header(avctx, v, &gb)) < 0)
|
if ((ret = ff_vc1_decode_sequence_header(avctx, v, &gb)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
@@ -770,8 +772,11 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
buf_size2 = vc1_unescape_buffer(buf, buf_size, buf2);
|
buf_size2 = vc1_unescape_buffer(buf, buf_size, buf2);
|
||||||
}
|
}
|
||||||
init_get_bits(&s->gb, buf2, buf_size2*8);
|
init_get_bits(&s->gb, buf2, buf_size2*8);
|
||||||
} else
|
} else{
|
||||||
init_get_bits(&s->gb, buf, buf_size*8);
|
ret = init_get_bits8(&s->gb, buf, buf_size);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
if (v->res_sprite) {
|
if (v->res_sprite) {
|
||||||
v->new_sprite = !get_bits1(&s->gb);
|
v->new_sprite = !get_bits1(&s->gb);
|
||||||
|
Reference in New Issue
Block a user