Browse Source

fix gethostby*_r result pointer value on error

according to the documentation in the man pages, the GNU extension
functions gethostbyaddr_r, gethostbyname_r and gethostbyname2_r are
guaranteed to set the result pointer to NULL in case of error or no
result.
Timo Teräs 10 years ago
parent
commit
fe82bb9b92
2 changed files with 3 additions and 0 deletions
  1. 2 0
      src/network/gethostbyaddr_r.c
  2. 1 0
      src/network/gethostbyname2_r.c

+ 2 - 0
src/network/gethostbyaddr_r.c

@@ -18,6 +18,8 @@ int gethostbyaddr_r(const void *a, socklen_t l, int af,
 	socklen_t sl = af==AF_INET6 ? sizeof sa.sin6 : sizeof sa.sin;
 	int i;
 
+	*res = 0;
+
 	/* Load address argument into sockaddr structure */
 	if (af==AF_INET6 && l==16) memcpy(&sa.sin6.sin6_addr, a, 16);
 	else if (af==AF_INET && l==4) memcpy(&sa.sin.sin_addr, a, 4);

+ 1 - 0
src/network/gethostbyname2_r.c

@@ -17,6 +17,7 @@ int gethostbyname2_r(const char *name, int af,
 	int i, cnt;
 	size_t align, need;
 
+	*res = 0;
 	cnt = __lookup_name(addrs, canon, name, af, AI_CANONNAME);
 	if (cnt<0) switch (cnt) {
 	case EAI_NONAME: