HID: logitech: fix bounds checking on LED report size
authorJiri Kosina <jkosina@suse.cz>
Thu, 21 Aug 2014 14:56:47 +0000 (09:56 -0500)
committerJiri Kosina <jkosina@suse.cz>
Thu, 21 Aug 2014 15:38:13 +0000 (10:38 -0500)
The check on report size for REPORT_TYPE_LEDS in logi_dj_ll_raw_request()
is wrong; the current check doesn't make any sense -- the report allocated
by HID core in hid_hw_raw_request() can be much larger than
DJREPORT_SHORT_LENGTH, and currently logi_dj_ll_raw_request() doesn't
handle this properly at all.

Fix the check by actually trimming down the report size properly if it is
too large.

Cc: stable@vger.kernel.org
Reported-by: Ben Hawkes <hawkes@google.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-logitech-dj.c

index 486dbde2ba2d90d3802e59163870b57c4274fb28..ca0ab5112efd6e152b0f5d6a6fd044da0bd33089 100644 (file)
@@ -557,7 +557,7 @@ static int logi_dj_ll_raw_request(struct hid_device *hid,
        if (!out_buf)
                return -ENOMEM;
 
-       if (count < DJREPORT_SHORT_LENGTH - 2)
+       if (count > DJREPORT_SHORT_LENGTH - 2)
                count = DJREPORT_SHORT_LENGTH - 2;
 
        out_buf[0] = REPORT_ID_DJ_SHORT;