mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
HID: handle logical min/max signedness properly in parser
When logical maximum is 0xffffffff, the parser fails even if logical minimum is more than 0. By HID specification this is a valid combination. Signed-off-by: srinivas pandruvada <srinivas.pandruvada@intel.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
d6d7c87352
commit
0cd516c246
@ -230,9 +230,15 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (parser->global.logical_maximum < parser->global.logical_minimum) {
|
||||
hid_err(parser->device, "logical range invalid %d %d\n",
|
||||
parser->global.logical_minimum, parser->global.logical_maximum);
|
||||
if ((parser->global.logical_minimum < 0 &&
|
||||
parser->global.logical_maximum <
|
||||
parser->global.logical_minimum) ||
|
||||
(parser->global.logical_minimum >= 0 &&
|
||||
(__u32)parser->global.logical_maximum <
|
||||
(__u32)parser->global.logical_minimum)) {
|
||||
dbg_hid("logical range invalid 0x%x 0x%x\n",
|
||||
parser->global.logical_minimum,
|
||||
parser->global.logical_maximum);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user