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.
This commit is contained in:
Timo Teräs 2014-06-20 13:53:23 +03:00 committed by Rich Felker
parent 2e5d256984
commit fe82bb9b92
2 changed files with 3 additions and 0 deletions

View File

@ -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);

View File

@ -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: