[PATCH] HID: i2c-hid: allocate hid buffers for real worst case

Subsystems: hid core layer, the rest

STALE3244d

6 messages, 3 authors, 2017-09-13 · open the first message on its own page

[PATCH] HID: i2c-hid: allocate hid buffers for real worst case

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2017-09-08 17:55:33

From: Adrian Salido <redacted>

The buffer allocation is not currently accounting for an extra byte for
the report id. This can cause an out of bounds access in function
i2c_hid_set_or_send_report() with reportID > 15.

Signed-off-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/hid/i2c-hid/i2c-hid.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c
index 77396145d2d0..9145c2129a96 100644
--- a/drivers/hid/i2c-hid/i2c-hid.c
+++ b/drivers/hid/i2c-hid/i2c-hid.c
@@ -543,7 +543,8 @@ static int i2c_hid_alloc_buffers(struct i2c_hid *ihid, size_t report_size)
 {
 	/* the worst case is computed from the set_report command with a
 	 * reportID > 15 and the maximum report length */
-	int args_len = sizeof(__u8) + /* optional ReportID byte */
+	int args_len = sizeof(__u8) + /* ReportID */
+		       sizeof(__u8) + /* optional ReportID byte */
 		       sizeof(__u16) + /* data register */
 		       sizeof(__u16) + /* size of the report */
 		       report_size; /* report */
-- 
2.14.1.581.gf28d330327-goog


-- 
Dmitry

Re: [PATCH] HID: i2c-hid: allocate hid buffers for real worst case

From: Jiri Kosina <jikos@kernel.org>
Date: 2017-09-13 14:02:09

On Fri, 8 Sep 2017, Dmitry Torokhov wrote:
From: Adrian Salido <redacted>

The buffer allocation is not currently accounting for an extra byte for
the report id. This can cause an out of bounds access in function
i2c_hid_set_or_send_report() with reportID > 15.

Signed-off-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Missing signoff from the patch author?

Also, I think this should have Cc: stable, right?

Thanks,

-- 
Jiri Kosina
SUSE Labs

Re: [PATCH] HID: i2c-hid: allocate hid buffers for real worst case

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2017-09-13 14:50:06

On Wed, Sep 13, 2017 at 07:02:05AM -0700, Jiri Kosina wrote:
On Fri, 8 Sep 2017, Dmitry Torokhov wrote:
quoted
From: Adrian Salido <redacted>

The buffer allocation is not currently accounting for an extra byte for
the report id. This can cause an out of bounds access in function
i2c_hid_set_or_send_report() with reportID > 15.

Signed-off-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Missing signoff from the patch author?
Oops, I must have cut it off on accident while removing ChromeOS
specific tags, the original commit is here:

https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/475212
Also, I think this should have Cc: stable, right?
I usually let maintainers decide, but yes.

Thanks.

-- 
Dmitry

Re: [PATCH] HID: i2c-hid: allocate hid buffers for real worst case

From: Jiri Kosina <jikos@kernel.org>
Date: 2017-09-13 14:52:26

On Wed, 13 Sep 2017, Dmitry Torokhov wrote:
quoted
quoted
From: Adrian Salido <redacted>

The buffer allocation is not currently accounting for an extra byte for
the report id. This can cause an out of bounds access in function
i2c_hid_set_or_send_report() with reportID > 15.

Signed-off-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Missing signoff from the patch author?
Oops, I must have cut it off on accident while removing ChromeOS
specific tags, the original commit is here:

https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/475212
Ok, thanks, will use that one. How about 

	Reviewed-by: Benson Leung [off-list ref]

which is missing in the mail you've sent, but is there in the above 
reference commit?
quoted
Also, I think this should have Cc: stable, right?
I usually let maintainers decide, but yes.
I'll be adding it. Thanks,

-- 
Jiri Kosina
SUSE Labs

Re: [PATCH] HID: i2c-hid: allocate hid buffers for real worst case

From: Benson Leung <hidden>
Date: 2017-09-13 15:00:45

Hi Jiri,

On Wed, Sep 13, 2017 at 07:52:20AM -0700, Jiri Kosina wrote:
quoted
Oops, I must have cut it off on accident while removing ChromeOS
specific tags, the original commit is here:

https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/475212
Ok, thanks, will use that one. How about 

	Reviewed-by: Benson Leung [off-list ref]

which is missing in the mail you've sent, but is there in the above 
reference commit?
Submission looks good to me. Go ahead and add.
Reviewed-by: Benson Leung <bleung@chromium.org>

Thanks,
Benson
-- 
Benson Leung
Staff Software Engineer
Chrome OS Kernel
Google Inc.
bleung@google.com
Chromium OS Project
bleung@chromium.org

Re: [PATCH] HID: i2c-hid: allocate hid buffers for real worst case

From: Jiri Kosina <jikos@kernel.org>
Date: 2017-09-13 16:18:19

On Fri, 8 Sep 2017, Dmitry Torokhov wrote:
From: Adrian Salido <redacted>

The buffer allocation is not currently accounting for an extra byte for
the report id. This can cause an out of bounds access in function
i2c_hid_set_or_send_report() with reportID > 15.

Signed-off-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
I've added the missing tags and applied to for-4.14/upstream-fixes

-- 
Jiri Kosina
SUSE Labs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help