]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: dvb-usb: dtv5100: fix out-of-bounds in dtv5100_i2c_msg()
authorJeongjun Park <aha310510@gmail.com>
Mon, 21 Apr 2025 12:52:44 +0000 (21:52 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Jan 2026 09:14:17 +0000 (10:14 +0100)
commit b91e6aafe8d356086cc621bc03e35ba2299e4788 upstream.

rlen value is a user-controlled value, but dtv5100_i2c_msg() does not
check the size of the rlen value. Therefore, if it is set to a value
larger than sizeof(st->data), an out-of-bounds vuln occurs for st->data.

Therefore, we need to add proper range checking to prevent this vuln.

Fixes: 60688d5e6e6e ("V4L/DVB (8735): dtv5100: replace dummy frontend by zl10353")
Cc: stable@vger.kernel.org
Signed-off-by: Jeongjun Park <aha310510@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/usb/dvb-usb/dtv5100.c

index 56c9d521a34a596601b7047043be896542a132e2..ee8a76fb5cc105e9a08063520bbf5f94e0971c5a 100644 (file)
@@ -55,6 +55,11 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr,
        }
        index = (addr << 8) + wbuf[0];
 
+       if (rlen > sizeof(st->data)) {
+               warn("rlen = %x is too big!\n", rlen);
+               return -EINVAL;
+       }
+
        memcpy(st->data, rbuf, rlen);
        msleep(1); /* avoid I2C errors */
        return usb_control_msg(d->udev, pipe, request,