| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Date: Fri, 6 Jan 2017 15:33:36 +0100 |
| Subject: HID: hid-cypress: validate length of report |
| |
| commit 1ebb71143758f45dc0fa76e2f48429e13b16d110 upstream. |
| |
| Make sure we have enough of a report structure to validate before |
| looking at it. |
| |
| Reported-by: Benoit Camredon <benoit.camredon@airbus.com> |
| Tested-by: Benoit Camredon <benoit.camredon@airbus.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/hid/hid-cypress.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/hid/hid-cypress.c |
| +++ b/drivers/hid/hid-cypress.c |
| @@ -40,6 +40,9 @@ static __u8 *cp_report_fixup(struct hid_ |
| if (!(quirks & CP_RDESC_SWAPPED_MIN_MAX)) |
| return rdesc; |
| |
| + if (*rsize < 4) |
| + return rdesc; |
| + |
| for (i = 0; i < *rsize - 4; i++) |
| if (rdesc[i] == 0x29 && rdesc[i + 2] == 0x19) { |
| __u8 tmp; |