[FFmpeg-devel] [PATCH] lavc/flacdec: Increase residual limit from INT_MAX to UINT_MAX

Martijn van Beurden mvanb1 at gmail.com
Wed Apr 6 10:12:50 EEST 2022


Op di 5 apr. 2022 om 15:37 schreef Martijn van Beurden <mvanb1 at gmail.com>:
>
> ---
>  libavcodec/flacdec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c
> index dd6026f9de..cb32d7cae8 100644
> --- a/libavcodec/flacdec.c
> +++ b/libavcodec/flacdec.c
> @@ -260,7 +260,7 @@ static int decode_residuals(FLACContext *s, int32_t *decoded, int pred_order)
>              for (; i < samples; i++)
>                  *decoded++ = get_sbits_long(&gb, tmp);
>          } else {
> -            int real_limit = tmp ? (INT_MAX >> tmp) + 2 : INT_MAX;
> +            int real_limit = (tmp > 1) ? (INT_MAX >> (tmp - 1)) + 2 : INT_MAX;
>              for (; i < samples; i++) {
>                  int v = get_sr_golomb_flac(&gb, tmp, real_limit, 1);
>                  if (v == 0x80000000){
> --
> 2.30.2
>

A file needing this patch to decode properly can be found here:
https://github.com/ktmf01/flac-test-files/blob/main/subset/63%20-%20predictor%20overflow%20check%2C%2024-bit.flac

Kind regards, Martijn van Beurden


More information about the ffmpeg-devel mailing list