]> sigrok.org Git - libsigrok.git/commit
testo: Fix USB device list leak
authorLars-Peter Clausen <redacted>
Fri, 6 May 2016 11:25:14 +0000 (13:25 +0200)
committerLars-Peter Clausen <redacted>
Mon, 9 May 2016 11:32:23 +0000 (13:32 +0200)
commitb75dc14a9410f57b3f7853854da013af86fb87c2
tree37b377363b27ef9c364aafaac46de3cca4e2a2d5
parentceb2da179f9446b0e61bde7cf7be9133b25683cc
testo: Fix USB device list leak

The testo 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/testo/api.c