mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
HID: pxrc: reject short input reports
The HID core invokes raw_event callbacks before validating the report length. pxrc_raw_event() reads byte seven and writes bytes one and seven without checking that the report contains those bytes. A one-byte input report reproduced the first invalid access under KASAN: BUG: KASAN: slab-out-of-bounds in pxrc_raw_event+0x161/0x260 Read of size 1 by task hidtrigger/90 Call Trace: pxrc_raw_event+0x161/0x260 kasan_report+0x139/0x170 Require all eight bytes before reading or rewriting the report. Commit47669bec44("HID: asus: refactor the two workqueues and init sequence") added the same kind of raw_event length validation to hid-asus. Fixes:acc3e34613("HID: Add driver for PhoenixRC Flight Controller") Cc: stable@vger.kernel.org Signed-off-by: Jiale Yao <yaojiale02@163.com> Signed-off-by: Jiri Kosina <jkosina@suse.com>
This commit is contained in:
parent
0ff37294c4
commit
0deb22da5a
|
|
@ -55,6 +55,9 @@ static int pxrc_raw_event(struct hid_device *hdev, struct hid_report *report,
|
|||
{
|
||||
struct pxrc_priv *priv = hid_get_drvdata(hdev);
|
||||
|
||||
if (size < 8)
|
||||
return 0;
|
||||
|
||||
if (priv->alternate)
|
||||
priv->slider = data[7];
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user