]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
HID: mcp2221: fix OOB write in mcp2221_raw_event()
authorFlorian Pradines <florian.pradines@gmail.com>
Sat, 9 May 2026 09:45:17 +0000 (09:45 +0000)
committerJiri Kosina <jkosina@suse.com>
Tue, 12 May 2026 15:48:16 +0000 (17:48 +0200)
commitf097d246677b03db814c5862f368cea341b76a00
tree0c99ca034b43977c21004cdd662f93cdd5d530bb
parent5f90dcfa8dc32a488581b78e575cdd7808ba5c78
HID: mcp2221: fix OOB write in mcp2221_raw_event()

mcp2221_raw_event() copies device-supplied data into mcp->rxbuf at
offset rxbuf_idx without checking that the copy fits within the
destination buffer. A device responding with up to 60 bytes to a
small I2C/SMBus read can overflow the buffer.

Add a rxbuf_size field to struct mcp2221, set it alongside rxbuf in
mcp_i2c_smbus_read(), and check rxbuf_idx + data[3] <= rxbuf_size
before the memcpy.

Reported-by: BenoƮt Sevens <bsevens@google.com>
Signed-off-by: Florian Pradines <florian.pradines@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-mcp2221.c