Commit 84f642f5639b29d020d971ce3deb495235412433

Con Kolivas 2013-10-12T15:06:48

Although async transfers are meant to use heap memory, we never return before the transfer function has completed so stack memory will suffice for control transfers, fixing a memory leak in the process.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
diff --git a/usbutils.c b/usbutils.c
index 5050ec2..7dce348 100644
--- a/usbutils.c
+++ b/usbutils.c
@@ -2712,12 +2712,9 @@ static int usb_control_transfer(libusb_device_handle *dev_handle, uint8_t bmRequ
 				unsigned char *buffer, uint16_t wLength, unsigned int timeout)
 {
 	struct usb_transfer ut;
+	unsigned char buf[70];
 	int err, transferred;
-	unsigned char *buf;
 
-	buf = malloc(70);
-	if (unlikely(!buf))
-		quit(1, "Failed to malloc buf in usb_control_transfer");
 	init_usb_transfer(&ut);
 	mutex_lock(&ut.mutex);
 	libusb_fill_control_setup(buf, bmRequestType, bRequest, wValue,