diff options
author | Ingo Molnar <mingo@kernel.org> | 2020-01-10 18:52:11 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2020-01-10 18:52:11 +0100 |
commit | 02df083201272c0c2e061b18d9c20635974abf6d (patch) | |
tree | 788321ae7a4867c4c06bd1d070cb98d49d009b76 /drivers/hid/hid-core.c | |
parent | 0679715e714345d273c0e1eb78078535ffc4b2a1 (diff) | |
parent | bef1d88263ff769f15aa0e1515cdcede84e61d15 (diff) |
Merge branch 'linus' into efi/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/hid/hid-core.c')
-rw-r--r-- | drivers/hid/hid-core.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index e0b241bd3070..851fe54ea59e 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -288,6 +288,12 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign offset = report->size; report->size += parser->global.report_size * parser->global.report_count; + /* Total size check: Allow for possible report index byte */ + if (report->size > (HID_MAX_BUFFER_SIZE - 1) << 3) { + hid_err(parser->device, "report is too long\n"); + return -1; + } + if (!parser->local.usage_index) /* Ignore padding fields */ return 0; |