|
@@ -794,6 +794,11 @@ static int wtp_raw_event(struct hid_device *hdev, u8 *data, int size)
|
|
|
|
|
|
switch (data[0]) {
|
|
|
case 0x02:
|
|
|
+ if (size < 2) {
|
|
|
+ hid_err(hdev, "Received HID report of bad size (%d)",
|
|
|
+ size);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
if (hidpp->quirks & HIDPP_QUIRK_WTP_PHYSICAL_BUTTONS) {
|
|
|
input_event(wd->input, EV_KEY, BTN_LEFT,
|
|
|
!!(data[1] & 0x01));
|
|
@@ -806,6 +811,7 @@ static int wtp_raw_event(struct hid_device *hdev, u8 *data, int size)
|
|
|
return wtp_mouse_raw_xy_event(hidpp, &data[7]);
|
|
|
}
|
|
|
case REPORT_ID_HIDPP_LONG:
|
|
|
+ /* size is already checked in hidpp_raw_event. */
|
|
|
if ((report->fap.feature_index != wd->mt_feature_index) ||
|
|
|
(report->fap.funcindex_clientid != EVENT_TOUCHPAD_RAW_XY))
|
|
|
return 1;
|