|
@@ -1293,6 +1293,7 @@ static void hid_input_field(struct hid_device *hid, struct hid_field *field,
|
|
|
/* Ignore report if ErrorRollOver */
|
|
|
if (!(field->flags & HID_MAIN_ITEM_VARIABLE) &&
|
|
|
value[n] >= min && value[n] <= max &&
|
|
|
+ value[n] - min < field->maxusage &&
|
|
|
field->usage[value[n] - min].hid == HID_UP_KEYBOARD + 1)
|
|
|
goto exit;
|
|
|
}
|
|
@@ -1305,11 +1306,13 @@ static void hid_input_field(struct hid_device *hid, struct hid_field *field,
|
|
|
}
|
|
|
|
|
|
if (field->value[n] >= min && field->value[n] <= max
|
|
|
+ && field->value[n] - min < field->maxusage
|
|
|
&& field->usage[field->value[n] - min].hid
|
|
|
&& search(value, field->value[n], count))
|
|
|
hid_process_event(hid, field, &field->usage[field->value[n] - min], 0, interrupt);
|
|
|
|
|
|
if (value[n] >= min && value[n] <= max
|
|
|
+ && value[n] - min < field->maxusage
|
|
|
&& field->usage[value[n] - min].hid
|
|
|
&& search(field->value, value[n], count))
|
|
|
hid_process_event(hid, field, &field->usage[value[n] - min], 1, interrupt);
|