From: Gerhard Sittig Date: Thu, 28 Sep 2023 18:35:00 +0000 (+0200) Subject: chronovu-la: rephrase the USB vendor check during scan X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=commitdiff_plain;h=bf8e267b658a50e12f0d5898f9dfdbb284b79efb chronovu-la: rephrase the USB vendor check during scan Provide more information in the source code comment on the motivation to only inspect a given USB VID during scan for ChronoVu LA devices. Use a different identifier for the expected VID, the previous implementation was rather misleading. --- diff --git a/src/hardware/chronovu-la/api.c b/src/hardware/chronovu-la/api.c index 5ed496b0..d5ca278b 100644 --- a/src/hardware/chronovu-la/api.c +++ b/src/hardware/chronovu-la/api.c @@ -20,7 +20,7 @@ #include #include "protocol.h" -#define CHRONOVU_VENDOR (0x0403) +#define SCAN_EXPECTED_VENDOR 0x0403 static const uint32_t scanopts[] = { SR_CONF_CONN, @@ -165,9 +165,20 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) libusb_get_device_descriptor(devlist[i], &des); - /* See https://sigrok.org/bugzilla/show_bug.cgi?id=1115 and - * https://github.com/sigrokproject/libsigrok/pull/166 */ - if (des.idVendor != CHRONOVU_VENDOR) + /* + * In theory we'd accept any USB device with a matching + * product string. In practice the enumeration takes a + * shortcut and only inspects devices when their USB VID + * matches the expectation. This avoids access to flaky + * devices which are unrelated to measurement purposes + * yet cause trouble when accessed including segfaults, + * while libusb won't transparently handle their flaws. + * + * See https://sigrok.org/bugzilla/show_bug.cgi?id=1115 + * and https://github.com/sigrokproject/libsigrok/pull/166 + * for a discussion. + */ + if (des.idVendor != SCAN_EXPECTED_VENDOR) continue; if ((ret = libusb_open(devlist[i], &hdl)) < 0)