summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.com>2026-08-03 22:02:09 +0200
committerJiri Kosina <jkosina@suse.com>2026-08-03 22:02:09 +0200
commitff02efb2b3c402dbcddf2eb7e0b3349854ec8027 (patch)
tree4e7fd6084899c521a002cd89053ccad525e61ace
parentc183123ef17d7291f23109dc3de7e29467b63df7 (diff)
parente9c667395ac1f8024f623250b32bae4c7af9caa0 (diff)
downloadlinux-next-ff02efb2b3c402dbcddf2eb7e0b3349854ec8027.tar.gz
linux-next-ff02efb2b3c402dbcddf2eb7e0b3349854ec8027.zip
Merge branch 'for-7.2/upstream-fixes' into for-next
-rw-r--r--drivers/hid/hid-picolcd_debugfs.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/hid/hid-picolcd_debugfs.c b/drivers/hid/hid-picolcd_debugfs.c
index 085847a92e07..1f7dfe60e9ba 100644
--- a/drivers/hid/hid-picolcd_debugfs.c
+++ b/drivers/hid/hid-picolcd_debugfs.c
@@ -99,6 +99,15 @@ static ssize_t picolcd_debug_eeprom_read(struct file *f, char __user *u,
ret = resp->raw_data[2];
if (ret > s)
ret = s;
+ /*
+ * raw_data[2] is a device-supplied length; also clamp it to
+ * what picolcd_raw_event() actually stored (raw_size), or a
+ * hostile device overruns the raw_data[] buffer.
+ */
+ if (ret > resp->raw_size - 3)
+ ret = resp->raw_size - 3;
+ if (ret < 0)
+ ret = 0;
if (copy_to_user(u, resp->raw_data+3, ret))
ret = -EFAULT;
else