Skip to content

Commit

Permalink
Don't enumerate devices we can't open
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Jan 26, 2020
1 parent adb53d0 commit 5e64998
Showing 1 changed file with 31 additions and 28 deletions.
59 changes: 31 additions & 28 deletions src/hidapi/libusb/hid.c
Expand Up @@ -608,25 +608,25 @@ struct hid_device_info HID_API_EXPORT *hid_enumerate(unsigned short vendor_id,
/* Check the VID/PID against the arguments */
if ((vendor_id == 0x0 || vendor_id == dev_vid) &&
(product_id == 0x0 || product_id == dev_pid)) {
struct hid_device_info *tmp;
res = libusb_open(dev, &handle);

/* VID/PID match. Create the record. */
tmp = (struct hid_device_info*) calloc(1, sizeof(struct hid_device_info));
if (cur_dev) {
cur_dev->next = tmp;
}
else {
root = tmp;
}
cur_dev = tmp;
if (res >= 0) {
struct hid_device_info *tmp;

/* Fill out the record */
cur_dev->next = NULL;
cur_dev->path = make_path(dev, interface_num);
/* VID/PID match. Create the record. */
tmp = (struct hid_device_info*) calloc(1, sizeof(struct hid_device_info));
if (cur_dev) {
cur_dev->next = tmp;
}
else {
root = tmp;
}
cur_dev = tmp;

res = libusb_open(dev, &handle);
/* Fill out the record */
cur_dev->next = NULL;
cur_dev->path = make_path(dev, interface_num);

if (res >= 0) {
/* Serial Number */
if (desc.iSerialNumber > 0)
cur_dev->serial_number =
Expand Down Expand Up @@ -704,19 +704,22 @@ struct hid_device_info HID_API_EXPORT *hid_enumerate(unsigned short vendor_id,
#endif /* INVASIVE_GET_USAGE */

libusb_close(handle);
}
/* VID/PID */
cur_dev->vendor_id = dev_vid;
cur_dev->product_id = dev_pid;

/* Release Number */
cur_dev->release_number = desc.bcdDevice;

/* Interface Number */
cur_dev->interface_number = interface_num;
cur_dev->interface_class = intf_desc->bInterfaceClass;
cur_dev->interface_subclass = intf_desc->bInterfaceSubClass;
cur_dev->interface_protocol = intf_desc->bInterfaceProtocol;

/* VID/PID */
cur_dev->vendor_id = dev_vid;
cur_dev->product_id = dev_pid;

/* Release Number */
cur_dev->release_number = desc.bcdDevice;

/* Interface Number */
cur_dev->interface_number = interface_num;
cur_dev->interface_class = intf_desc->bInterfaceClass;
cur_dev->interface_subclass = intf_desc->bInterfaceSubClass;
cur_dev->interface_protocol = intf_desc->bInterfaceProtocol;

} else
LOG("Can't open device 0x%.4x/0x%.4x during enumeration: %d\n", dev_vid, dev_pid, res);
}
}
} /* altsettings */
Expand Down

0 comments on commit 5e64998

Please sign in to comment.