If the user-supplied hostname can't be found then we should not use it.
We already avoid doing that in the non-NO_IPV6 case by checking if the
return value of getaddrinfo() is zero (success). Do the same in the
NO_IPV6 case and make sure the return value of gethostbyname() isn't
NULL before dereferencing this pointer.
Signed-off-by: Rene Scharfe l@web.de
---
Most lines are just re-indented, not actually changed.
daemon.c | 27 ++-
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/daemon.c b/daemon.c
index 4dcfff9..a6f467e 100644
--- a/daemon.c
+++ b/daemon.c
@@ -553,20 +553,21 @@ static void parse_host_arg(char *extra_args, int buflen)
static char addrbuf[HOST_NAME_MAX + 1];
hent = gethostbyname(hostname);
+ if (hent) {
+ ap = hent-h_addr_list;
+ memset(sa, 0, sizeof sa);
+ sa.sin_family = hent-h_addrtype;
+ sa.sin_port = htons(0);
+ memcpy(sa.sin_addr, *ap, hent-h_length);
+
+ inet_ntop(hent-h_addrtype, sa.sin_addr,
+ addrbuf, sizeof(addrbuf));
- ap = hent-h_addr_list;
- memset(sa, 0, sizeof sa);
- sa.sin_family = hent-h_addrtype;
- sa.sin_port = htons(0);
- memcpy(sa.sin_addr, *ap, hent-h_length);
-
- inet_ntop(hent-h_addrtype, sa.sin_addr,
- addrbuf, sizeof(addrbuf));
-
- free(canon_hostname);
- canon_hostname = xstrdup(hent-h_name);
- free(ip_address);
- ip_address = xstrdup(addrbuf);
+ free(canon_hostname);
+ canon_hostname = xstrdup(hent-h_name);
+ free(ip_address);
+ ip_address = xstrdup(addrbuf);
+ }
#endif
}
}
--
2.1.2
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html