Commit 50420d7c authored by Karol Przybylski's avatar Karol Przybylski Committed by Jiri Kosina
Browse files

HID: hid-thrustmaster: Fix warning in thrustmaster_probe by adding endpoint check

syzbot has found a type mismatch between a USB pipe and the transfer
endpoint, which is triggered by the hid-thrustmaster driver[1].
There is a number of similar, already fixed issues [2].
In this case as in others, implementing check for endpoint type fixes the issue.

[1] https://syzkaller.appspot.com/bug?extid=040e8b3db6a96908d470
[2] https://syzkaller.appspot.com/bug?extid=348331f63b034f89b622



Fixes: c49c3363 ("HID: support for initialization of some Thrustmaster wheels")
Reported-by: default avatar <syzbot+040e8b3db6a96908d470@syzkaller.appspotmail.com>
Tested-by: default avatar <syzbot+040e8b3db6a96908d470@syzkaller.appspotmail.com>
Signed-off-by: default avatarKarol Przybylski <karprzy7@gmail.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.com>
parent 86b05bb2
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -170,6 +170,14 @@ static void thrustmaster_interrupts(struct hid_device *hdev)
	ep = &usbif->cur_altsetting->endpoint[1];
	b_ep = ep->desc.bEndpointAddress;

	/* Are the expected endpoints present? */
	u8 ep_addr[1] = {b_ep};

	if (!usb_check_int_endpoints(usbif, ep_addr)) {
		hid_err(hdev, "Unexpected non-int endpoint\n");
		return;
	}

	for (i = 0; i < ARRAY_SIZE(setup_arr); ++i) {
		memcpy(send_buf, setup_arr[i], setup_arr_sizes[i]);