X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstlink-usb.c;fp=src%2Fstlink-usb.c;h=24f9769880fc9f3303fd0350db2b02d6e28b99ba;hb=a6b2f93661822b33de22aa533f09319850e352fe;hp=f3f41e37a9bcdfa196adaa1a555d9f39cdcb7762;hpb=6fe3a02c18ccfc8d5d9b15b6de1ac01f40fdaf33;p=fw%2Fstlink diff --git a/src/stlink-usb.c b/src/stlink-usb.c index f3f41e3..24f9769 100644 --- a/src/stlink-usb.c +++ b/src/stlink-usb.c @@ -776,10 +776,12 @@ stlink_t *stlink_open_usb(enum ugly_loglevel verbose, bool reset, char serial[16 (unsigned char *)sl->serial, sizeof(sl->serial)); libusb_close(handle); - if (sl->serial_size < 0) - continue; - if (serial == NULL) + if ((serial == NULL) || (*serial == 0)) break; + + if (sl->serial_size < 0) + continue; + if (memcmp(serial, &sl->serial, sl->serial_size) == 0) break; @@ -938,7 +940,9 @@ static size_t stlink_probe_usb_devs(libusb_device **devs, stlink_t **sldevs[]) { WLOG("failed to get libusb device descriptor\n"); break; } - libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, (unsigned char *)&serial, sizeof(serial)); + ret = libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, (unsigned char *)&serial, sizeof(serial)); + if (ret < 0) *serial = 0; + libusb_close(handle); stlink_t *sl = NULL;