getaddrinfo: In gaih_inet, use h_errno for certain status values only

h_errno is not set for NSS_STATUS_SUCCESS, so its value might not be
accurate at this point.
This commit is contained in:
Florian Weimer 2017-09-01 08:57:52 +02:00
parent ad816a5e00
commit a2881ef014
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2017-09-01 Florian Weimer <fweimer@redhat.com>
* sysdeps/posix/getaddrinfo.c (gaih_inet): Only use h_errno if
status indicates it is set.
2017-09-01 Florian Weimer <fweimer@redhat.com>
* sysdeps/posix/getaddrinfo.c (gaih_inet): Make reporting of NSS

View File

@ -948,7 +948,10 @@ gaih_inet (const char *name, const struct gaih_service *service,
__resolv_context_enable_inet6 (res_ctx, res_enable_inet6);
__resolv_context_put (res_ctx);
if (h_errno == NETDB_INTERNAL)
/* If we have a failure which sets errno, report it using
EAI_SYSTEM. */
if ((status == NSS_STATUS_TRYAGAIN || status == NSS_STATUS_UNAVAIL)
&& h_errno == NETDB_INTERNAL)
{
result = -EAI_SYSTEM;
goto free_and_return;