aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-07-01 03:41:30 -0700
committerUlrich Drepper <drepper@redhat.com>2009-07-01 03:41:30 -0700
commit2fd0cd8b5257e7ae0c0df0651ee62a6ef7c37cc2 (patch)
tree26f7bb61593ddaca9ca8e3668a63dacc9ccf433b
parent5cd1f906c34256abdccc92052fbbde51fd70a565 (diff)
downloadglibc-2fd0cd8b5257e7ae0c0df0651ee62a6ef7c37cc2.zip
glibc-2fd0cd8b5257e7ae0c0df0651ee62a6ef7c37cc2.tar.gz
glibc-2fd0cd8b5257e7ae0c0df0651ee62a6ef7c37cc2.tar.bz2
Fix NIS and NIS+ getnetbyaddr backends.
The addresses were interpreted as class-based network addresses.
-rw-r--r--ChangeLog5
-rw-r--r--nis/nss_nis/nis-network.c2
-rw-r--r--nis/nss_nisplus/nisplus-network.c2
3 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 6dfd700..0c6c36f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
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,
recognize all types.
* nss/getent.c (networks_keys): Pass AF_UNSPEC instead of AF_UNIX
diff --git a/nis/nss_nis/nis-network.c b/nis/nss_nis/nis-network.c
index 9b02302..22a898b 100644
--- a/nis/nss_nis/nis-network.c
+++ b/nis/nss_nis/nis-network.c
@@ -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))
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);
size_t blen = strlen (buf);
diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c
index 1cf652f..902826b 100644
--- a/nis/nss_nisplus/nisplus-network.c
+++ b/nis/nss_nisplus/nisplus-network.c
@@ -433,7 +433,7 @@ _nss_nisplus_getnetbyaddr_r (uint32_t addr, const int type,
char buf2[18];
int olderr = errno;
- struct in_addr in = inet_makeaddr (addr, 0);
+ struct in_addr in = { .s_addr = htonl (addr) };
strcpy (buf2, inet_ntoa (in));
size_t b2len = strlen (buf2);