]> sigrok.org Git - libsigrok.git/commitdiff
usb_get_port_path(): fix libusb error checking
authorVincent Palatin <redacted>
Mon, 10 Nov 2014 16:17:07 +0000 (08:17 -0800)
committerUwe Hermann <redacted>
Sun, 23 Nov 2014 16:58:21 +0000 (17:58 +0100)
When libusb cannot access a device, libusb_get_port_numbers() will return
an error. Check the return code rather than doing invalid pointer
operations (out-of-bound read).

Avoid segfaults at sigrok-cli startup on my setup where some USB devices are
not accessible and also make Valgrind happier.

Signed-off-by: Vincent Palatin <redacted>
src/usb.c

index ec502c97501704f38bed9b2d535374166ff7601e..8bdb8d60d07e36f794aefb99bf2298fcefb0bb99 100644 (file)
--- a/src/usb.c
+++ b/src/usb.c
@@ -278,6 +278,9 @@ SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len)
 
        n = libusb_get_port_numbers(dev, port_numbers, sizeof(port_numbers));
 
+       if (n < 1)
+               return SR_ERR;
+
        len = snprintf(path, path_len, "usb/%d-%d",
                       libusb_get_bus_number(dev), port_numbers[0]);