From f2d7b52e1b53b8e7266d3d82f8c8f68281b25d61 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 8 Oct 2015 16:38:57 +0200 Subject: [HID] Improved checks in getDescriptor() method --- libraries/HID/HID.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'libraries') diff --git a/libraries/HID/HID.cpp b/libraries/HID/HID.cpp index 762d170..bff00e3 100644 --- a/libraries/HID/HID.cpp +++ b/libraries/HID/HID.cpp @@ -40,9 +40,12 @@ int HID_::getInterface(uint8_t* interfaceCount) int HID_::getDescriptor(USBSetup& setup) { - if (pluggedInterface != setup.wIndex) { - return 0; - } + // Check if this is a HID Class Descriptor request + if (setup.bmRequestType != REQUEST_DEVICETOHOST_STANDARD_INTERFACE) { return 0; } + if (setup.wValueH != HID_REPORT_DESCRIPTOR_TYPE) { return 0; } + + // In a HID Class Descriptor wIndex cointains the interface number + if (setup.wIndex != pluggedInterface) { return 0; } int total = 0; HIDDescriptorListNode* node; -- cgit v1.2.3-18-g5258