]> sigrok.org Git - libsigrok.git/commit
zeroplus-logic-cube: Fix USB device list
authorLars-Peter Clausen <redacted>
Fri, 6 May 2016 11:27:09 +0000 (13:27 +0200)
committerLars-Peter Clausen <redacted>
Mon, 9 May 2016 12:17:33 +0000 (14:17 +0200)
commit87629577fe803769bc8b4e7a2bc122785cf90c81
tree18e68dbfef794f46863ac719f2fe0eeccb3748a4
parent4af1f68f9a69daa22064c4b99831f6dee5c5fbb2
zeroplus-logic-cube: Fix USB device list

The zeroplus-logic-cube driver uses libusb_get_device_list() but neglects
to call the matching libusb_device_list_free() on the error path. This will
leak the memory allocated for the list as well as all the devices.

To address the issue use sr_usb_open() instead of open-coding its
functionality. sr_usb_open() correctly handles freeing the device list.

The issue was discovered using the following coccinelle semantic patch:
// <smpl>
@@
identifier devlist;
expression ctx, ret;
statement S;
@@
(
 libusb_get_device_list(ctx, &devlist);
|
 ret = libusb_get_device_list(ctx, &devlist);
 if (ret < 0) S
)
... when != libusb_free_device_list(devlist, ...)
*return ...;
// </smpl>

Signed-off-by: Lars-Peter Clausen <redacted>
src/hardware/zeroplus-logic-cube/api.c