[FFmpeg-devel] [PATCH] tests/checkasm/llauddsp: Avoid UB integer overflow
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Wed May 15 14:00:22 EEST 2024
Andreas Rheinhardt:
> The only multiplicators used in scalarproduct_and_madd_*
> are -1, 0 and +1. Yet it is of type int and the checkasm
> test uses the complete range of int for it, leading to overflows
> that don't happen for actual users.
>
> Fix this by using a more reasonable range for mul: Given
> that it is used in v1[i] += v3[i] * mul with v1 being
> a 16bit integer, it makes no sense to use values for mul
> that don't fit into 16bit.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
> tests/checkasm/llauddsp.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tests/checkasm/llauddsp.c b/tests/checkasm/llauddsp.c
> index e6eab589b2..969166baca 100644
> --- a/tests/checkasm/llauddsp.c
> +++ b/tests/checkasm/llauddsp.c
> @@ -49,7 +49,7 @@ static void check_scalarproduct_and_madd_int16(LLAudDSPContext *c)
> randomize_buf(v1, BUF_SIZE);
> randomize_buf(v2, BUF_SIZE);
> randomize_buf(v3, BUF_SIZE);
> - mul = rnd();
> + mul = (int16_t)rnd();
>
> if (check_func(c->scalarproduct_and_madd_int16,
> "scalarproduct_and_madd_int16")) {
> @@ -84,7 +84,7 @@ static void check_scalarproduct_and_madd_int32(LLAudDSPContext *c)
> randomize_buf(v1, BUF_SIZE);
> randomize_buf(v2, BUF_SIZE);
> randomize_buf(v3, BUF_SIZE);
> - mul = rnd();
> + mul = (int16_t)rnd();
>
> if (check_func(c->scalarproduct_and_madd_int32,
> "scalarproduct_and_madd_int32")) {
Will apply tonight unless there are objections.
- Andreas
More information about the ffmpeg-devel
mailing list