diff --git a/dongle.c b/dongle.c index cbd7f869d26f235986d2a481b818171c3d6afb02..ee571563479852309e0b3ae23d5ff24007c89b8b 100644 --- a/dongle.c +++ b/dongle.c @@ -498,12 +498,12 @@ int get_devices(void) name = get_device_name(path); if (!name) continue; + dev = (struct device *)calloc(1, sizeof(*dev)); if (!dev) { perror("calloc"); goto fail_dev; } - dev->usb.product = get_usb_stat(path, "product"); dev->usb.product_id = get_usb_stat(path, "idProduct"); dev->usb.vendor_id = get_usb_stat(path, "idVendor"); @@ -543,34 +543,25 @@ char *get_device_ip(char *device_name) while ((fgets(route, 1024, fp)) != NULL) { remove_newline(route); - iface = lexer(&route, "\t"); - destination = lexer(&route, "\t"); - gateway = lexer(&route, "\t"); - flags = lexer(&route, "\t"); + iface = strtok(route, "\t"); + destination = strtok(NULL, "\t"); + gateway = strtok(NULL, "\t"); + flags = strtok(NULL, "\t"); if (strncmp(iface, device_name, 10) != 0) - goto free_vars; + continue; + printf("iface %s"); host_flag = atoi(flags) & 4; if (!host_flag) - goto free_vars; + continue; ipv4_addr = (char *)calloc(1, IPV4_MAX); - if (!ipv4_addr) { - free(iface); - free(destination); - free(gateway); - free(flags); + if (!ipv4_addr) break; - } + addr.s_addr = strtoul(destination, NULL, IPV4_MAX); inet_ntop(AF_INET, &(addr.s_addr), ipv4_addr, IPV4_MAX); - -free_vars: - free(iface); - free(destination); - free(gateway); - free(flags); } free(route);