From 26c7f3001fb38759acbab2eafeac109795552acf Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Mon, 2 Jul 2012 22:37:44 +0000 Subject: [PATCH] -fix notfound handling --- src/gns/nss/nss_gns.c | 7 +++++++ src/gns/nss/nss_gns_query.c | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/gns/nss/nss_gns.c b/src/gns/nss/nss_gns.c index 82fe1e739..b3b1346aa 100644 --- a/src/gns/nss/nss_gns.c +++ b/src/gns/nss/nss_gns.c @@ -140,12 +140,19 @@ enum nss_status _nss_gns_gethostbyname2_r( if (!gns_resolve_name(af, name, &u) == 0) { status = NSS_STATUS_NOTFOUND; + goto finish; } } + else + { + status = NSS_STATUS_UNAVAIL; + goto finish; + } if (u.count == 0) { *errnop = ETIMEDOUT; *h_errnop = HOST_NOT_FOUND; + status = NSS_STATUS_NOTFOUND; goto finish; } diff --git a/src/gns/nss/nss_gns_query.c b/src/gns/nss/nss_gns_query.c index 1eadff0ce..11356c216 100644 --- a/src/gns/nss/nss_gns_query.c +++ b/src/gns/nss/nss_gns_query.c @@ -46,8 +46,11 @@ int gns_resolve_name(int af, const char *name, struct userdata *u) line[strlen(line)-1] = '\0'; if (af == AF_INET) { - if (inet_pton(af, line, &(u->data.ipv4[u->count++]))) + if (inet_pton(af, line, &(u->data.ipv4[u->count]))) + { + u->count++; u->data_len += sizeof(ipv4_address_t); + } else { fclose (p); @@ -57,8 +60,11 @@ int gns_resolve_name(int af, const char *name, struct userdata *u) } else if ((af == AF_INET6)) { - if (inet_pton(af, line, &(u->data.ipv6[u->count++]))) + if (inet_pton(af, line, &(u->data.ipv6[u->count]))) + { + u->count++; u->data_len += sizeof(ipv6_address_t); + } else { fclose (p); -- 2.25.1