Fix rpcbind init after r300941.

- getaddrinfo() sets res = NULL on failure and freeaddrinfo() always
  dereferences its argument, so we should only free the address list after
  a successful call.
- Address a second potential leak caused by getaddrinfo(AF_INET6)
  overwriting the address list returned by getaddrinfo(AF_INET).

X-MFC-With:	r300941
This commit is contained in:
Mark Johnston 2016-05-29 19:46:34 +00:00
parent 6180f50bbb
commit 5656b5057e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=300972

View File

@ -338,6 +338,7 @@ network_init(void)
exit(1);
}
memcpy(local_in4, res->ai_addr, sizeof *local_in4);
freeaddrinfo(res);
}
#ifdef INET6
@ -354,6 +355,7 @@ network_init(void)
exit(1);
}
memcpy(local_in6, res->ai_addr, sizeof *local_in6);
freeaddrinfo(res);
}
/*
@ -395,7 +397,6 @@ network_init(void)
freeifaddrs(ifp);
#endif
freeaddrinfo(res);
/* close(s); */
}