summaryrefslogtreecommitdiffstats
path: root/lib/libutil
diff options
context:
space:
mode:
authorshin <shin@FreeBSD.org>2000-01-27 17:24:53 +0000
committershin <shin@FreeBSD.org>2000-01-27 17:24:53 +0000
commit021aaed8bfae0e1753faf12a105fed8f0bd63034 (patch)
tree5c116f8e0336df75fa9d61fe6edaddc237fe3787 /lib/libutil
parent7d7738eedb35bcea817e3010fbbb820aa9ab6bbd (diff)
downloadFreeBSD-src-021aaed8bfae0e1753faf12a105fed8f0bd63034.zip
FreeBSD-src-021aaed8bfae0e1753faf12a105fed8f0bd63034.tar.gz
Avoid core dump when ai_canonname is NULL.
(Now this happens for numeric addrs, as getaddrinfo() 1.3 -> 1.4 change) Reviewed by: Mark Huizer <xaa@timewasters.nl>
Diffstat (limited to 'lib/libutil')
-rw-r--r--lib/libutil/realhostname.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/libutil/realhostname.c b/lib/libutil/realhostname.c
index 7236890..2c9c5c5 100644
--- a/lib/libutil/realhostname.c
+++ b/lib/libutil/realhostname.c
@@ -122,8 +122,10 @@ realhostname_sa(char *host, size_t hsize, struct sockaddr *addr, int addrlen)
port = ((struct sockinet *)addr)->si_port;
((struct sockinet *)addr)->si_port = 0;
if (!memcmp(sa, addr, sa->sa_len)) {
- strncpy(host, res->ai_canonname,
- hsize);
+ if (res->ai_canonname != 0)
+ strncpy(host,
+ res->ai_canonname,
+ hsize);
result = HOSTNAME_FOUND;
((struct sockinet *)addr)->si_port =
port;
@@ -146,8 +148,10 @@ realhostname_sa(char *host, size_t hsize, struct sockaddr *addr, int addrlen)
if (IN6_IS_ADDR_V4MAPPED(in6) &&
!memcmp(&in6->s6_addr[12], in,
sizeof(*in))) {
- strncpy(host, res->ai_canonname,
- hsize);
+ if (res->ai_canonname != 0)
+ strncpy(host,
+ res->ai_canonname,
+ hsize);
result = HOSTNAME_FOUND;
break;
}
OpenPOWER on IntegriCloud