Windows: Allow HID reports up to 1024 + report id
authorStefan Agner <stefan.agner@toradex.com>
Wed, 2 Nov 2016 01:27:12 +0000 (18:27 -0700)
committerChris Dickens <christopher.a.dickens@gmail.com>
Wed, 1 Mar 2017 07:26:52 +0000 (23:26 -0800)
HID reports can contain up to 1024 bytes. When using a report id
the complete buffer will be 1025 bytes. Do not return an error
if the user supplies a report id and a buffer of 1025 bytes size.

Closes #222
Closes #226

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
libusb/os/windows_winusb.c
libusb/version_nano.h

index 545c59b..bccedb9 100644 (file)
@@ -3357,11 +3357,13 @@ static int _hid_set_report(struct hid_device_priv *dev, HANDLE hid_handle, int i
 {
        uint8_t *buf = NULL;
        DWORD ioctl_code, write_size = (DWORD)*size;
+       // If an id is reported, we must allow MAX_HID_REPORT_SIZE + 1
+       size_t max_report_size = MAX_HID_REPORT_SIZE + (id ? 1 : 0);
 
        if (tp->hid_buffer != NULL)
                usbi_dbg("program assertion failed: hid_buffer is not NULL");
 
-       if ((*size == 0) || (*size > MAX_HID_REPORT_SIZE)) {
+       if ((*size == 0) || (*size > max_report_size)) {
                usbi_dbg("invalid size (%u)", *size);
                return LIBUSB_ERROR_INVALID_PARAM;
        }
index e9b13cf..e9dbf91 100644 (file)
@@ -1 +1 @@
-#define LIBUSB_NANO 11191
+#define LIBUSB_NANO 11192