The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] media: dvb-usb: dtv5100: fix out-of-bounds in dtv5100_i2c_msg()
@ 2025-04-21 12:52 Jeongjun Park
  0 siblings, 0 replies; only message in thread
From: Jeongjun Park @ 2025-04-21 12:52 UTC (permalink / raw)
  To: mchehab
  Cc: christophe.jaillet, hverkuil, royale, linux-media, linux-kernel,
	Jeongjun Park

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")
Signed-off-by: Jeongjun Park <aha310510@gmail.com>
---
 drivers/media/usb/dvb-usb/dtv5100.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/media/usb/dvb-usb/dtv5100.c b/drivers/media/usb/dvb-usb/dtv5100.c
index 3d85c6f7f6ec..c448e2ebda1a 100644
--- a/drivers/media/usb/dvb-usb/dtv5100.c
+++ b/drivers/media/usb/dvb-usb/dtv5100.c
@@ -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,
--

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2025-04-21 12:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-21 12:52 [PATCH] media: dvb-usb: dtv5100: fix out-of-bounds in dtv5100_i2c_msg() Jeongjun Park

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox