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);