mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-11-10 20:48:12 +00:00
`i2c_hid_xfer` is used to read `recv_len + sizeof(__le16)` bytes of data into `ihid->rawbuf`. The former can come from the userspace in the hidraw driver and is only bounded by HID_MAX_BUFFER_SIZE(16384) by default (unless we also set `max_buffer_size` field of `struct hid_ll_driver` which we do not). The latter has size determined at runtime by the maximum size of different report types you could receive on any particular device and can be a much smaller value. Fix this by truncating `recv_len` to `ihid->bufsize - sizeof(__le16)`. The impact is low since access to hidraw devices requires root. Signed-off-by: Kwok Kin Ming <kenkinming2002@gmail.com> Signed-off-by: Benjamin Tissoires <bentiss@kernel.org> |
History
|
|
|---|---|---|
| .. | ||
| i2c-hid-acpi.c | ||
| i2c-hid-core.c | ||
| i2c-hid-dmi-quirks.c | ||
| i2c-hid-of-elan.c | ||
| i2c-hid-of-goodix.c | ||
| i2c-hid-of.c | ||
| i2c-hid.h | ||
| Kconfig | ||
| Makefile | ||