| From d022fa2f96f49f593b76f9fabfb9df23d7bfdcdd Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Date: Fri, 6 Jan 2017 15:33:36 +0100 |
| Subject: [PATCH] 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> |
| Cc: stable <stable@vger.kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/hid/hid-cypress.c b/drivers/hid/hid-cypress.c |
| index 1b764d1745f3..1689568b597d 100644 |
| --- a/drivers/hid/hid-cypress.c |
| +++ b/drivers/hid/hid-cypress.c |
| @@ -39,6 +39,9 @@ static __u8 *cp_report_fixup(struct hid_device *hdev, __u8 *rdesc, |
| 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) { |
| rdesc[i] = 0x19; |
| -- |
| 2.10.1 |
| |