Skip to content

Commit

Permalink
Fix case where we might reference a buffer that has fallen out of scope.
Browse files Browse the repository at this point in the history
  • Loading branch information
tjsaunders committed Oct 11, 2014
1 parent 29465b2 commit ebfc4de
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/netaddr.c
Expand Up @@ -1763,7 +1763,7 @@ static int netaddr_get_dnsstr_gethostbyname(pr_netaddr_t *na,
* this function returns a string of the DNS name (if present).
*/
const char *pr_netaddr_get_dnsstr(pr_netaddr_t *na) {
char *name = NULL;
char dns_buf[1024], *name = NULL;
pr_netaddr_t *cache = NULL;

if (na == NULL) {
Expand All @@ -1789,30 +1789,30 @@ const char *pr_netaddr_get_dnsstr(pr_netaddr_t *na) {
}

if (reverse_dns) {
char buf[256];
int res = 0;

pr_trace_msg(trace_channel, 3,
"verifying DNS name for IP address %s via reverse DNS lookup",
pr_netaddr_get_ipstr(na));

memset(buf, '\0', sizeof(buf));
memset(dns_buf, '\0', sizeof(dns_buf));
res = pr_getnameinfo(pr_netaddr_get_sockaddr(na),
pr_netaddr_get_sockaddr_len(na), buf, sizeof(buf), NULL, 0, NI_NAMEREQD);
buf[sizeof(buf)-1] = '\0';
pr_netaddr_get_sockaddr_len(na), dns_buf, sizeof(dns_buf), NULL, 0,
NI_NAMEREQD);
dns_buf[sizeof(dns_buf)-1] = '\0';

if (res == 0) {
/* Some older glibc's getaddrinfo(3) does not appear to handle IPv6
* addresses properly; we thus prefer gethostbyname2(3) on systems
* which have it, for such older systems.
*/
#ifdef HAVE_GETHOSTBYNAME2
res = netaddr_get_dnsstr_gethostbyname(na, buf);
res = netaddr_get_dnsstr_gethostbyname(na, dns_buf);
#else
res = netaddr_get_dnsstr_getaddrinfo(na, buf);
res = netaddr_get_dnsstr_getaddrinfo(na, dns_buf);
#endif /* HAVE_GETHOSTBYNAME2 */
if (res == 0) {
name = buf;
name = dns_buf;
pr_trace_msg(trace_channel, 8,
"using DNS name '%s' for IP address '%s'", name,
pr_netaddr_get_ipstr(na));
Expand Down

0 comments on commit ebfc4de

Please sign in to comment.