]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: msp3400: Avoid possible out-of-bounds array accesses in msp3400c_thread()
authorIvan Abramov <i.abramov@mt-integration.ru>
Tue, 2 Sep 2025 23:28:14 +0000 (02:28 +0300)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Tue, 14 Oct 2025 13:07:37 +0000 (15:07 +0200)
It's possible for max1 to remain -1 if msp_read() always fail. This
variable is further used as index for accessing arrays.

Fix that by checking max1 prior to array accesses.

It seems that restart is the preferable action in case of out-of-bounds
value.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 8a4b275f9c19 ("V4L/DVB (3427): audmode and rxsubchans fixes (VIDIOC_G/S_TUNER)")
Cc: stable@vger.kernel.org
Signed-off-by: Ivan Abramov <i.abramov@mt-integration.ru>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/i2c/msp3400-kthreads.c

index ecabc0e1d32e6ed09179ec38f5cae2938b42292f..1d9f41dd7c212cc6281be306dca80d25e2d8b730 100644 (file)
@@ -596,6 +596,8 @@ restart:
                                "carrier2 val: %5d / %s\n", val, cd[i].name);
                }
 
+               if (max1 < 0 || max1 > 3)
+                       goto restart;
                /* program the msp3400 according to the results */
                state->main = msp3400c_carrier_detect_main[max1].cdo;
                switch (max1) {