]> www.infradead.org Git - users/jedix/linux-maple.git/commit
HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()
authorTerry Junge <linuxhid@cosmicgizmosystems.com>
Wed, 12 Mar 2025 22:23:31 +0000 (15:23 -0700)
committerJiri Kosina <jkosina@suse.com>
Thu, 24 Apr 2025 09:31:25 +0000 (11:31 +0200)
commitfe7f7ac8e0c708446ff017453add769ffc15deed
tree135ea6189571ac0e15317db7bb6676cb203bee14
parent5e06802b426baa2d3c2a5d7784a6d4c2a9338c3e
HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()

Update struct hid_descriptor to better reflect the mandatory and
optional parts of the HID Descriptor as per USB HID 1.11 specification.
Note: the kernel currently does not parse any optional HID class
descriptors, only the mandatory report descriptor.

Update all references to member element desc[0] to rpt_desc.

Add test to verify bLength and bNumDescriptors values are valid.

Replace the for loop with direct access to the mandatory HID class
descriptor member for the report descriptor. This eliminates the
possibility of getting an out-of-bounds fault.

Add a warning message if the HID descriptor contains any unsupported
optional HID class descriptors.

Reported-by: syzbot+c52569baf0c843f35495@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=c52569baf0c843f35495
Fixes: f043bfc98c19 ("HID: usbhid: fix out-of-bounds bug")
Cc: stable@vger.kernel.org
Signed-off-by: Terry Junge <linuxhid@cosmicgizmosystems.com>
Reviewed-by: Michael Kelley <mhklinux@outlook.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-hyperv.c
drivers/hid/usbhid/hid-core.c
drivers/usb/gadget/function/f_hid.c
include/linux/hid.h