Fix NIS and NIS+ getnetbyaddr backends.

The addresses were interpreted as class-based network addresses.
This commit is contained in:
Ulrich Drepper 2009-07-01 03:41:30 -07:00
parent 5cd1f906c3
commit 2fd0cd8b52
3 changed files with 7 additions and 2 deletions

View File

@ -1,5 +1,10 @@
2009-07-01 Ulrich Drepper <drepper@redhat.com> 2009-07-01 Ulrich Drepper <drepper@redhat.com>
* nis/nss_nis/nis-network.c (_nss_nis_getnetbyaddr_r): Don't use
inet_makeaddr. This worked only with class-based networks.
* nis/nss_nisplus/nisplus-network.c (_nss_nisplus_getnetbyaddr_r):
Likewise.
* nss/nss_files/files-network.c (netbyaddr): If type is AF_UNSPEC, * nss/nss_files/files-network.c (netbyaddr): If type is AF_UNSPEC,
recognize all types. recognize all types.
* nss/getent.c (networks_keys): Pass AF_UNSPEC instead of AF_UNIX * nss/getent.c (networks_keys): Pass AF_UNSPEC instead of AF_UNIX

View File

@ -241,7 +241,7 @@ _nss_nis_getnetbyaddr_r (uint32_t addr, int type, struct netent *net,
if (__builtin_expect (yp_get_default_domain (&domain), 0)) if (__builtin_expect (yp_get_default_domain (&domain), 0))
return NSS_STATUS_UNAVAIL; return NSS_STATUS_UNAVAIL;
struct in_addr in = inet_makeaddr (addr, 0); struct in_addr in = { .s_addr = htonl (addr) };
char *buf = inet_ntoa (in); char *buf = inet_ntoa (in);
size_t blen = strlen (buf); size_t blen = strlen (buf);

View File

@ -433,7 +433,7 @@ _nss_nisplus_getnetbyaddr_r (uint32_t addr, const int type,
char buf2[18]; char buf2[18];
int olderr = errno; int olderr = errno;
struct in_addr in = inet_makeaddr (addr, 0); struct in_addr in = { .s_addr = htonl (addr) };
strcpy (buf2, inet_ntoa (in)); strcpy (buf2, inet_ntoa (in));
size_t b2len = strlen (buf2); size_t b2len = strlen (buf2);