فهرست منبع

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 11 سال پیش
والد
کامیت
fe82bb9b92
2فایلهای تغییر یافته به همراه3 افزوده شده و 0 حذف شده
  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: