From 032ea63d4ef348cfe39eaa112a4babf6ed1c9c95 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakobols@kth.se>
Date: Mon, 11 Jun 2018 16:25:00 +0200
Subject: [PATCH] more debuged memory leakage, STILL leaks from within
get_device_ip
---
dongle.c | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/dongle.c b/dongle.c
index 4580550..db9fba9 100644
--- a/dongle.c
+++ b/dongle.c
@@ -523,14 +523,14 @@ fail_dr:
char *get_device_ip(char *device_name)
{
char *iface, *destination, *gateway, *flags, *route, *ipv4_addr = NULL;
- bool host_flag;
+ int host_flag;
struct in_addr addr;
FILE *fp;
fp = fopen("/proc/net/route", "r");
if (!fp) {
perror("fopen");
- goto fail;
+ goto fail_fopen;
}
route = (char *)calloc(1, 1024);
@@ -548,34 +548,34 @@ char *get_device_ip(char *device_name)
flags = lexer(&route, "\t");
if (strncmp(iface, device_name, 10) != 0)
- continue;
+ goto free_vars;
host_flag = atoi(flags) & 4;
- if (!host_flag) {
- free(route);
+ if (!host_flag)
+ goto free_vars;
+
+ ipv4_addr = (char *)calloc(1, IPV4_MAX);
+ if (!ipv4_addr) {
free(iface);
free(destination);
free(gateway);
free(flags);
- continue;
- }
- ipv4_addr = (char *)calloc(1, IPV4_MAX);
- if (!ipv4_addr)
break;
-
+ }
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_vars:
+ free(iface);
+ free(destination);
+ free(gateway);
+ free(flags);
}
+
free(route);
- free(iface);
- free(destination);
- free(gateway);
- free(flags);
fail_route:
fclose(fp);
-fail:
+fail_fopen:
return ipv4_addr;
}
--
GitLab