diff options
Diffstat (limited to 'hw/usb_cfs_client_common.c')
-rw-r--r-- | hw/usb_cfs_client_common.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/hw/usb_cfs_client_common.c b/hw/usb_cfs_client_common.c index 8eff847..f423d22 100644 --- a/hw/usb_cfs_client_common.c +++ b/hw/usb_cfs_client_common.c @@ -124,6 +124,8 @@ static void cfs_free_gadget(struct usb_gadget *gadget) free(gadget->funcs); } + + free(gadget); } static int cfs_read_gadget_attrs_strs(usbg_gadget *gadget, @@ -144,7 +146,6 @@ static int cfs_read_gadget_attrs_strs(usbg_gadget *gadget, usb_gadget->attrs.idProduct = attrs.idProduct; usb_gadget->attrs.bcdDevice = attrs.bcdDevice; - ret = usbg_get_gadget_strs(gadget, LANG_US_ENG, &strs); if (ret) goto out; @@ -153,6 +154,8 @@ static int cfs_read_gadget_attrs_strs(usbg_gadget *gadget, usb_gadget->strs[0].product = strdup(strs.product); usb_gadget->strs[0].serial = strdup(strs.serial); + usbg_free_gadget_strs(&strs); + if (!usb_gadget->strs[0].manufacturer || !usb_gadget->strs[0].product || !usb_gadget->strs[0].serial) { |