Parcourir la 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.

corresponds to commit fe82bb9b921be34370e6b71a1c6f062c20999ae0 in
master branch.
Rich Felker il y a 10 ans
Parent
commit
bf9d9ceaa3
2 fichiers modifiés avec 4 ajouts et 0 suppressions
  1. 2 0
      src/network/gethostbyaddr_r.c
  2. 2 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);

+ 2 - 0
src/network/gethostbyname2_r.c

@@ -20,6 +20,8 @@ int gethostbyname2_r(const char *name, int af,
 	size_t need;
 	const char *canon;
 
+	*res = 0;
+
 	af = hint.ai_family;
 
 	/* Align buffer */