getifaddrs.3: Fix memory leak in example program

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Lucio Maciel 2009-01-22 21:08:56 +01:00 committed by Michael Kerrisk
parent 6197b465ef
commit 54457ec1f3
1 changed files with 9 additions and 8 deletions

View File

@ -30,7 +30,7 @@
.\" for glibc specificities, provide an example.
.\" 2009-01-14 mtk, many edits and changes, rewrote example program.
.\"
.TH GETIFADDRS 3 2009-01-14 "GNU" "Linux Programmer's Manual"
.TH GETIFADDRS 3 2009-01-23 "GNU" "Linux Programmer's Manual"
.\" FIXME Make a link for freeifaddrs.3
.\" FIXME Check other changes in Petr's mail
.SH NAME
@ -233,7 +233,7 @@ eth0 address family: 10 (AF_INET6)
int
main(int argc, char *argv[])
{
struct ifaddrs *ifaddr;
struct ifaddrs *ifaddr, *ifa;
struct net_device_stats *ndsp;
int family, s;
char host[NI_MAXHOST];
@ -243,14 +243,17 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
while (ifaddr != NULL) { /* Walk through linked list */
family = ifaddr\->ifa_addr\->sa_family;
/* Walk through linked list, maintaining head pointer so we
can free list later */
for (ifa = ifaddr; ifa != NULL; ifa = ifa\->ifa_next;) {
family = ifa\->ifa_addr\->sa_family;
/* Display interface name and family (including symbolic
form of the latter for the common families) */
printf("%\-6s address family: %d%s\\n",
ifaddr\->ifa_name, family,
ifa\->ifa_name, family,
(family == AF_PACKET) ? " (AF_PACKET)" :
(family == AF_INET) ? " (AF_INET)" :
(family == AF_INET6) ? " (AF_INET6)" : "");
@ -258,7 +261,7 @@ main(int argc, char *argv[])
/* For an AF_INET* interface address, display the address */
if (family == AF_INET || family == AF_INET6) {
s = getnameinfo(ifaddr\->ifa_addr,
s = getnameinfo(ifa\->ifa_addr,
(family == AF_INET) ? sizeof(struct sockaddr_in) :
sizeof(struct sockaddr_in6),
host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
@ -268,8 +271,6 @@ main(int argc, char *argv[])
}
printf("\\taddress: <%s>\\n", host);
}
ifaddr = ifaddr\->ifa_next;
}
freeifaddrs(ifaddr);