diff options
Diffstat (limited to 'nss/nsswitch.c')
-rw-r--r-- | nss/nsswitch.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/nss/nsswitch.c b/nss/nsswitch.c index 895b17825a..21174dfbab 100644 --- a/nss/nsswitch.c +++ b/nss/nsswitch.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 +/* Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -59,9 +59,9 @@ static service_library *nss_new_service (name_database *database, #undef DEFINE_DATABASE /* Structure to map database name to variable. */ -static struct +static const struct { - const char *name; + const char name[10]; service_user **dbp; } databases[] = { @@ -70,6 +70,7 @@ static struct #include "databases.def" #undef DEFINE_DATABASE }; +#define ndatabases (sizeof (databases) / sizeof (databases[0])) __libc_lock_define_initialized (static, lock) @@ -211,7 +212,7 @@ __nss_configure_lookup (const char *dbname, const char *service_line) service_user *new_db; size_t cnt; - for (cnt = 0; cnt < sizeof databases; ++cnt) + for (cnt = 0; cnt < ndatabases; ++cnt) { int cmp = strcmp (dbname, databases[cnt].name); if (cmp == 0) @@ -223,7 +224,7 @@ __nss_configure_lookup (const char *dbname, const char *service_line) } } - if (cnt == sizeof databases) + if (cnt == ndatabases) { __set_errno (EINVAL); return -1; |