[PATCH 1/3] daemon: handle gethostbyname() error

2014-10-01 Thread René Scharfe
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


Re: [PATCH 1/3] daemon: handle gethostbyname() error

2014-10-01 Thread Junio C Hamano
All three look trivially correct.  Thanks.
--
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