浏览代码

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 10 年之前
父节点
当前提交
bf9d9ceaa3
共有 2 个文件被更改,包括 4 次插入0 次删除
  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 */