HID: be more strict when ignoring out-of-range fields
HID 1.11 specification, section 5.10 tells us: HID class devices support the ability to ignore selected fields in a report at run- time. This is accomplished by declaring bit field in a report that is capable of containing a range of values larger than those actually generated by the control. If the host or the device receives an out-of-range value then the current value for the respective control will not be modified. So we shouldn't be restricted to EV_ABS only. Reported-by: Denilson Figueiredo de Sá <denilsonsa@gmail.com> Tested-by: Denilson Figueiredo de Sá <denilsonsa@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
6da7066906
commit
b4b583d4e9
|
@ -822,9 +822,8 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
|
|||
return;
|
||||
}
|
||||
|
||||
/* Ignore absolute values that are out of bounds */
|
||||
if ((usage->type == EV_ABS && (value < field->logical_minimum ||
|
||||
value > field->logical_maximum))) {
|
||||
/* Ignore out-of-range values as per HID specification, section 5.10 */
|
||||
if (value < field->logical_minimum || value > field->logical_maximum) {
|
||||
dbg_hid("Ignoring out-of-range value %x\n", value);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue