Skip to content

Commit 146a9dc

Browse files
adriansmgregkh
authored andcommitted
HID: i2c-hid: allocate hid buffers for real worst case
commit 8320caeeffdefec3b58b9d4a7ed8e1079492fe7b upstream. 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: Adrian Salido <salidoa@google.com> Reviewed-by: Benson Leung <bleung@chromium.org> Signed-off-by: Guenter Roeck <groeck@chromium.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 8750959 commit 146a9dc

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

drivers/hid/i2c-hid/i2c-hid.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,8 @@ static int i2c_hid_alloc_buffers(struct i2c_hid *ihid, size_t report_size)
540540
{
541541
/* the worst case is computed from the set_report command with a
542542
* reportID > 15 and the maximum report length */
543-
int args_len = sizeof(__u8) + /* optional ReportID byte */
543+
int args_len = sizeof(__u8) + /* ReportID */
544+
sizeof(__u8) + /* optional ReportID byte */
544545
sizeof(__u16) + /* data register */
545546
sizeof(__u16) + /* size of the report */
546547
report_size; /* report */

0 commit comments

Comments
 (0)