diff options
| author | Michael Stapelberg | 2009-07-22 18:30:16 +0200 | 
|---|---|---|
| committer | Michael Stapelberg | 2009-07-22 18:30:16 +0200 | 
| commit | e56213db28c442a7a67e2424d1631a7f1f42a5fc (patch) | |
| tree | 77a69f5df7205091b66d3cdc749b82de9482002f /src | |
| parent | Obtain IP address in a portable way, patch by Baptiste Daroussin (diff) | |
Free the addresses correctly
Diffstat (limited to 'src')
| -rw-r--r-- | src/get_ip_addr.c | 10 | 
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;  } | 
