summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLéo Lam <leo@innovatetechnologi.es>2019-05-03 12:49:00 +0200
committerNathan Hjelm <hjelmn@me.com>2019-07-07 21:59:09 -0600
commit028a92e5f4336e3ff99ddef8ae581b116bba6a9b (patch)
tree423d14f4149ffc364d8df69b5b5cb7c0b7dbc7ea
parent4d05bf9621147e72f031235086f0f06234e525d7 (diff)
downloadlibusb-028a92e5f4336e3ff99ddef8ae581b116bba6a9b.tar.gz
windows_winusb: Mask wIndex correctly when checking interfaces
According to the USB 3.0 spec (9.3.4), the interface number is in the lower 8 bits of wIndex. Note that wIndex must not be modified because some (non-compliant?) devices actually use the higher 8 bits for custom data with recipient-interface requests. Closes #567 Signed-off-by: Nathan Hjelm <hjelmn@me.com>
-rw-r--r--libusb/os/windows_winusb.c2
-rw-r--r--libusb/version_nano.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/libusb/os/windows_winusb.c b/libusb/os/windows_winusb.c
index 423fb3d..e18a723 100644
--- a/libusb/os/windows_winusb.c
+++ b/libusb/os/windows_winusb.c
@@ -2474,7 +2474,7 @@ static int winusbx_submit_control_transfer(int sub_api, struct usbi_transfer *it
return LIBUSB_ERROR_INVALID_PARAM;
if ((setup->RequestType & 0x1F) == LIBUSB_RECIPIENT_INTERFACE)
- current_interface = check_valid_interface(transfer->dev_handle, setup->Index, USB_API_WINUSBX);
+ current_interface = check_valid_interface(transfer->dev_handle, setup->Index & 0xff, USB_API_WINUSBX);
else
current_interface = get_valid_interface(transfer->dev_handle, USB_API_WINUSBX);
if (current_interface < 0) {
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index 77a129a..971eaf4 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11372
+#define LIBUSB_NANO 11373