From d236b63e81d2e92fc86181a4d147dbde38a8ac31 Mon Sep 17 00:00:00 2001 From: Chris Dickens Date: Mon, 12 Mar 2018 10:28:40 -0700 Subject: [PATCH] Windows: WinUSB: Guard against erroneous reporting of devices During enumeration, obtaining the port number via SPDRP_ADDRESS might return a bogus value for some third-party HCD drivers. If this occurs, we might end up reporting the device as having the VID/PID from the last successful enumeration. Guard against this particular situation by clearing the USB_NODE_CONNECTION_INFORMATION_EX structure before issuing the DeviceIoControl() call. References #403 Signed-off-by: Chris Dickens --- libusb/os/windows_winusb.c | 1 + libusb/version_nano.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/libusb/os/windows_winusb.c b/libusb/os/windows_winusb.c index 9927115..1783700 100644 --- a/libusb/os/windows_winusb.c +++ b/libusb/os/windows_winusb.c @@ -857,6 +857,7 @@ static int init_device(struct libusb_device *dev, struct libusb_device *parent_d return LIBUSB_ERROR_ACCESS; } + memset(&conn_info, 0, sizeof(conn_info)); conn_info.ConnectionIndex = (ULONG)port_number; // coverity[tainted_data_argument] if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX, &conn_info, sizeof(conn_info), diff --git a/libusb/version_nano.h b/libusb/version_nano.h index 1adf635..92f2e78 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 11305 +#define LIBUSB_NANO 11306 -- 2.7.4