summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorIvan Abramov <i.abramov@mt-integration.ru>2025-09-03 02:28:14 +0300
committerHans Verkuil <hverkuil+cisco@kernel.org>2025-10-14 15:07:37 +0200
commitd2bceb2e20e783d57e739c71e4e50b4b9f4a3953 (patch)
treedee2d7af7b89308020a1d9fe7362beeb0fc3366e /drivers
parent8163419e3e05d71dcfa8fb49c8fdf8d76908fe51 (diff)
media: msp3400: Avoid possible out-of-bounds array accesses in msp3400c_thread()
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/i2c/msp3400-kthreads.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/media/i2c/msp3400-kthreads.c b/drivers/media/i2c/msp3400-kthreads.c
index ecabc0e1d32e..1d9f41dd7c21 100644
--- a/drivers/media/i2c/msp3400-kthreads.c
+++ b/drivers/media/i2c/msp3400-kthreads.c
@@ -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) {