From c06b1d6f7c4aa0687f9467c62fe3f767509793a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Redon?= Date: Sun, 1 Jul 2018 18:17:06 +0200 Subject: [PATCH] host usb_util fix: used provided class, sub-class, and interfave when finding matching interfaces Change-Id: Ibc06e751e6ca0f9e9a40d82c4eeddfb975240f91 --- host/libusb_util.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/host/libusb_util.c b/host/libusb_util.c index 3236e414..5ee685e3 100644 --- a/host/libusb_util.c +++ b/host/libusb_util.c @@ -130,11 +130,11 @@ int dev_find_matching_interfaces(libusb_device *dev, int class, int sub_class, i for (k = 0; k < intf->num_altsetting; k++) { const struct libusb_interface_descriptor *if_desc; if_desc = &intf->altsetting[k]; - if (class > 0 && if_desc->bInterfaceClass != class) + if (class >= 0 && if_desc->bInterfaceClass != class) continue; - if (sub_class > 0 && if_desc->bInterfaceSubClass != sub_class) + if (sub_class >= 0 && if_desc->bInterfaceSubClass != sub_class) continue; - if (protocol > 0 && if_desc->bInterfaceProtocol != protocol) + if (protocol >= 0 && if_desc->bInterfaceProtocol != protocol) continue; /* MATCH! */ out[out_idx].usb_dev = dev; @@ -197,7 +197,7 @@ int usb_match_interfaces(libusb_context *ctx, const struct dev_id *dev_ids, dev_desc.idVendor, dev_desc.idProduct, addr); #endif - rc = dev_find_matching_interfaces(*dev, 255, 2, -1, out_cur, out_len_remain); + rc = dev_find_matching_interfaces(*dev, class, sub_class, protocol, out_cur, out_len_remain); if (rc < 0) continue; out_cur += rc;