diff --git a/dongle.c b/dongle.c index 9f7747717f2f98635cee4c285b886509edbd4637..26bdf6390be27f3e87d3d2ca8cdd27e084021a61 100644 --- a/dongle.c +++ b/dongle.c @@ -345,9 +345,11 @@ char *get_device_name(char *dir_name) while (!list_empty(&stack) && !name) { dr = pop(&stack); dir = opendir(dr->path); - if (!dir) + if (!dir) { + free(dr->path); + free(dr); continue; - + } push(dr, &visited); while ((de = readdir(dir)) != NULL) { @@ -531,13 +533,12 @@ char *get_device_ip(char *device_name) goto fail; } - route = (char *)malloc(1024); + route = (char *)calloc(1, 1024); if (!route) { - perror("malloc"); + perror("calloc"); goto fail_route; } - memset(route, 0, 1024); while ((fgets(route, 1024, fp)) != NULL) { remove_newline(route); @@ -559,9 +560,10 @@ 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); + //printf("ipv4_addr %s\n", ipv4_addr); } + free(route); free(iface); free(destination); free(gateway);