diff --git a/dongle.c b/dongle.c index a02669df7daab4c3703b67098c83a1fc1c39118c..4580550061d305ea57a645a9b8f152a5b288572f 100644 --- a/dongle.c +++ b/dongle.c @@ -228,7 +228,7 @@ void free_device(struct device *dev) free(dev->ip); free_usb(&(dev->usb)); - free(&(dev->usb)); + //free(&(dev->usb)); } void free_usb(struct USB *usb) @@ -551,9 +551,14 @@ char *get_device_ip(char *device_name) continue; host_flag = atoi(flags) & 4; - if (!host_flag) + if (!host_flag) { + free(route); + free(iface); + free(destination); + free(gateway); + free(flags); continue; - + } ipv4_addr = (char *)calloc(1, IPV4_MAX); if (!ipv4_addr) break; @@ -561,8 +566,8 @@ char *get_device_ip(char *device_name) addr.s_addr = strtoul(destination, NULL, IPV4_MAX); inet_ntop(AF_INET, &(addr.s_addr), ipv4_addr, IPV4_MAX); //printf("ipv4_addr %s\n", ipv4_addr); - } + } free(route); free(iface); free(destination);