about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--nss/getent.c2
-rw-r--r--nss/nss_files/files-network.c5
3 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 7a25874b73..714d114d5e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-07-01  Ulrich Drepper  <drepper@redhat.com>
+
+	* nss/nss_files/files-network.c (netbyaddr): If type is AF_UNSPEC,
+	recognize all types.  Fix endianess in comparison of network number.
+	* nss/getent.c (networks_keys): Pass AF_UNSPEC instead of AF_UNIX
+	to getnetbyaddr.
+
 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/x86_64/multiarch/ifunc-defines.sym (FAMILIY_OFFSET): Define.
diff --git a/nss/getent.c b/nss/getent.c
index 3a9430fd66..3a482e140f 100644
--- a/nss/getent.c
+++ b/nss/getent.c
@@ -534,7 +534,7 @@ networks_keys (int number, char *key[])
   for (i = 0; i < number; ++i)
     {
       if (isdigit (key[i][0]))
-	net = getnetbyaddr (inet_addr (key[i]), AF_UNIX);
+	net = getnetbyaddr (inet_addr (key[i]), AF_UNSPEC);
       else
 	net = getnetbyname (key[i]);
 
diff --git a/nss/nss_files/files-network.c b/nss/nss_files/files-network.c
index 9f4a3e0324..064de5a143 100644
--- a/nss/nss_files/files-network.c
+++ b/nss/nss_files/files-network.c
@@ -1,5 +1,5 @@
 /* Networks file parser in nss_files module.
-   Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1996-1998, 2000, 2001, 2009 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -81,7 +81,8 @@ DB_LOOKUP (netbyname, ,,
 
 DB_LOOKUP (netbyaddr, ,,
 	   {
-	     if (result->n_addrtype == type && result->n_net == net)
+	     if ((type == AF_UNSPEC || result->n_addrtype == type)
+		 && result->n_net == htonl (net))
 	       /* Bingo!  */
 	       break;
 	   }, uint32_t net, int type)