Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH] tests/checkasm/llauddsp: Avoid UB integer overflow
@ 2024-05-12 23:11 Andreas Rheinhardt
  2024-05-15 11:00 ` Andreas Rheinhardt
  0 siblings, 1 reply; 2+ messages in thread
From: Andreas Rheinhardt @ 2024-05-12 23:11 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: 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@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")) {
-- 
2.40.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [FFmpeg-devel] [PATCH] tests/checkasm/llauddsp: Avoid UB integer overflow
  2024-05-12 23:11 [FFmpeg-devel] [PATCH] tests/checkasm/llauddsp: Avoid UB integer overflow Andreas Rheinhardt
@ 2024-05-15 11:00 ` Andreas Rheinhardt
  0 siblings, 0 replies; 2+ messages in thread
From: Andreas Rheinhardt @ 2024-05-15 11:00 UTC (permalink / raw)
  To: ffmpeg-devel

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@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

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-05-15 11:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-12 23:11 [FFmpeg-devel] [PATCH] tests/checkasm/llauddsp: Avoid UB integer overflow Andreas Rheinhardt
2024-05-15 11:00 ` Andreas Rheinhardt

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git