summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stapelberg <michael@stapelberg.de>2009-07-22 18:30:16 +0200
committerMichael Stapelberg <michael@stapelberg.de>2009-07-22 18:30:16 +0200
commite56213db28c442a7a67e2424d1631a7f1f42a5fc (patch)
tree77a69f5df7205091b66d3cdc749b82de9482002f
parent4a6deddf7b3e38203d27a10baf7ba21ff90d96d3 (diff)
Free the addresses correctly
-rw-r--r--src/get_ip_addr.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/get_ip_addr.c b/src/get_ip_addr.c
index 354ae08..cc812f2 100644
--- a/src/get_ip_addr.c
+++ b/src/get_ip_addr.c
@@ -42,19 +42,25 @@ const char *get_ip_addr(const char *interface) {
addrp = addrp->ifa_next) {
/* Check if the interface is down */
if (strcmp(addrp->ifa_name, eth_interface) == 0 &&
- (addrp->ifa_flags & IFF_RUNNING) == 0)
+ (addrp->ifa_flags & IFF_RUNNING) == 0) {
+ freeifaddrs(ifaddr);
return NULL;
+ }
}
- if (addrp == NULL)
+ if (addrp == NULL) {
+ freeifaddrs(ifaddr);
return "no IP";
+ }
int ret;
if ((ret = getnameinfo(addrp->ifa_addr, len, part, sizeof(part), NULL, 0, NI_NUMERICHOST)) != 0) {
fprintf(stderr, "getnameinfo(): %s\n", gai_strerror(ret));
+ freeifaddrs(ifaddr);
return "no IP";
}
+ freeifaddrs(ifaddr);
return part;
}