[FFmpeg-cvslog] tests/checkasm/llauddsp: Avoid UB integer overflow

Andreas Rheinhardt git at videolan.org
Fri May 17 14:41:42 EEST 2024


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Mon May 13 01:02:49 2024 +0200| [dff0a1557eabd435d251eaf10157b40bca4eefb5] | committer: Andreas Rheinhardt

tests/checkasm/llauddsp: Avoid UB integer overflow

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>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dff0a1557eabd435d251eaf10157b40bca4eefb5
---

 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")) {



More information about the ffmpeg-cvslog mailing list