]> sigrok.org Git - libsigrok.git/commit
victor-dmm: Fix USB device list leak
authorLars-Peter Clausen <redacted>
Fri, 6 May 2016 11:26:02 +0000 (13:26 +0200)
committerLars-Peter Clausen <redacted>
Mon, 9 May 2016 12:17:08 +0000 (14:17 +0200)
commit4af1f68f9a69daa22064c4b99831f6dee5c5fbb2
tree65206cc1c611b80a5e52bcd0f3ce8cb499cc4dd7
parentb75dc14a9410f57b3f7853854da013af86fb87c2
victor-dmm: Fix USB device list leak

The victor-dmm driver uses libusb_get_device_list() but neglects to call
the matching libusb_device_list_free() on the error path of libusb_open().
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/victor-dmm/api.c