From 555bd6e95bf2b469306d9cd86e126c0122d0895b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 16 Jul 2014 03:30:40 +0200 Subject: [PATCH 1/1] nss: various minor fixes to nss-myhostname + nss-mymachines --- src/nss-myhostname/nss-myhostname.c | 13 ++++++++----- src/nss-mymachines/nss-mymachines.c | 9 +++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index 23646e6e8..f5dadb60a 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -387,6 +387,12 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r( assert(errnop); assert(h_errnop); + if (!IN_SET(af, AF_INET, AF_INET6)) { + *errnop = EAFNOSUPPORT; + *h_errnop = NO_DATA; + return NSS_STATUS_UNAVAIL; + } + if (len != PROTO_ADDRESS_SIZE(af)) { *errnop = EINVAL; *h_errnop = NO_RECOVERY; @@ -404,17 +410,14 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r( goto found; } - } else if (af == AF_INET6) { + } else { + assert(af == AF_INET6); if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) { additional = "localhost"; goto found; } - } else { - *errnop = EAFNOSUPPORT; - *h_errnop = NO_DATA; - return NSS_STATUS_UNAVAIL; } n_addresses = local_addresses(&addresses); diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c index 2d3e54210..532749995 100644 --- a/src/nss-mymachines/nss-mymachines.c +++ b/src/nss-mymachines/nss-mymachines.c @@ -131,7 +131,7 @@ enum nss_status _nss_mymachines_gethostbyname4_r( goto fail; if (c <= 0) { - *errnop = ENOENT; + *errnop = ESRCH; *h_errnop = HOST_NOT_FOUND; return NSS_STATUS_NOTFOUND; } @@ -140,7 +140,7 @@ enum nss_status _nss_mymachines_gethostbyname4_r( ms = ALIGN(l+1) + ALIGN(sizeof(struct gaih_addrtuple)) * c; if (buflen < ms) { *errnop = ENOMEM; - *h_errnop = NO_RECOVERY; + *h_errnop = TRY_AGAIN; return NSS_STATUS_TRYAGAIN; } @@ -168,6 +168,11 @@ enum nss_status _nss_mymachines_gethostbyname4_r( if (r < 0) goto fail; + if (!IN_SET(family, AF_INET, AF_INET6)) { + r = -EAFNOSUPPORT; + goto fail; + } + if (sz != PROTO_ADDRESS_SIZE(family)) { r = -EINVAL; goto fail; -- 2.30.2