Diego Biurrun <[email protected]> writes:

> User-provided data should never trigger an assert; return error instead.
> Also fix an instance of get_bits where get_bits_long should have been used.
>
> This eliminates the following warning:
> libavcodec/vaapi_mpeg2.c:112:14: warning: variable 'start_code' set but not 
> used
> ---
>  libavcodec/vaapi_mpeg2.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c
> index 561f4bf..b608246 100644
> --- a/libavcodec/vaapi_mpeg2.c
> +++ b/libavcodec/vaapi_mpeg2.c
> @@ -109,14 +109,14 @@ static int vaapi_mpeg2_decode_slice(AVCodecContext 
> *avctx, const uint8_t *buffer
>      MpegEncContext * const s = avctx->priv_data;
>      VASliceParameterBufferMPEG2 *slice_param;
>      GetBitContext gb;
> -    uint32_t start_code, quantiser_scale_code, intra_slice_flag, 
> macroblock_offset;
> +    uint32_t quantiser_scale_code, intra_slice_flag, macroblock_offset;
>
>      av_dlog(avctx, "vaapi_mpeg2_decode_slice(): buffer %p, size %d\n", 
> buffer, size);
>
>      /* Determine macroblock_offset */
>      init_get_bits(&gb, buffer, 8 * size);
> -    start_code = get_bits(&gb, 32);
> -    assert((start_code & 0xffffff00) == 0x00000100);
> +    if (get_bits_long(&gb, 32) >> 8 != 1) /* start code */
> +        return AVERROR_INVALIDDATA;
>      quantiser_scale_code = get_bits(&gb, 5);
>      intra_slice_flag = get_bits1(&gb);
>      if (intra_slice_flag) {
> -- 

Looks OK.

-- 
Måns Rullgård
[email protected]
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to