Browse Source

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.

nfactor-troky
Con Kolivas 11 years ago
parent
commit
84f642f563
  1. 5
      usbutils.c

5
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) unsigned char *buffer, uint16_t wLength, unsigned int timeout)
{ {
struct usb_transfer ut; struct usb_transfer ut;
unsigned char buf[70];
int err, transferred; 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); init_usb_transfer(&ut);
mutex_lock(&ut.mutex); mutex_lock(&ut.mutex);
libusb_fill_control_setup(buf, bmRequestType, bRequest, wValue, libusb_fill_control_setup(buf, bmRequestType, bRequest, wValue,

Loading…
Cancel
Save