[PATCH v3 11/12] HID: ft260: fix a NULL pointer dereference in ft260_i2c_write

From: Michael Zaidman
Date: Sun Oct 30 2022 - 16:35:27 EST


The len=0 passed into the ft260_i2c_write() triggered the NULL
pointer dereference in the debug message on access to data[0].
Since a Write without data makes little sense in this context,
do not allow it.

Before:

$ sudo i2ctransfer -y 13 w0@0x51
Killed

After:

$ sudo i2ctransfer -y 13 w0@0x51
Error: Sending messages failed: Invalid argument

Reported-by: Enrik Berkhan <Enrik.Berkhan@xxxxxxx>
Signed-off-by: Michael Zaidman <michael.zaidman@xxxxxxxxx>
---
drivers/hid/hid-ft260.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/hid/hid-ft260.c b/drivers/hid/hid-ft260.c
index 00cbe7693ba0..b3f715f6ea86 100644
--- a/drivers/hid/hid-ft260.c
+++ b/drivers/hid/hid-ft260.c
@@ -395,6 +395,8 @@ static int ft260_i2c_write(struct ft260_device *dev, u8 addr, u8 *data,
struct ft260_i2c_write_request_report *rep =
(struct ft260_i2c_write_request_report *)dev->write_buf;

+ if (len < 1)
+ return -EINVAL;

if (time_is_before_jiffies(dev->need_wakeup_at)) {
(void)ft260_xfer_status(dev);
--
2.34.1