From 5d4cf042506c290f6f6c62d95ce2ebb56c854a7a Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 6 Jul 2011 10:52:31 -0400 Subject: Fix handling of chained netgroups --- inet/getnetgrent_r.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'inet/getnetgrent_r.c') diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c index 42045a201d..b588897df1 100644 --- a/inet/getnetgrent_r.c +++ b/inet/getnetgrent_r.c @@ -279,6 +279,11 @@ internal_getnetgrent_r (char **hostp, char **userp, char **domainp, namep = namep->next) if (strcmp (datap->val.group, namep->name) == 0) break; + if (namep == NULL) + for (namep = datap->needed_groups; namep != NULL; + namep = namep->next) + if (strcmp (datap->val.group, namep->name) == 0) + break if (namep != NULL) /* Really ignore. */ continue; -- cgit 1.4.1 From 960e5535b08ea358caefe8eb831aae36cc4826c5 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 6 Jul 2011 11:38:42 -0400 Subject: Add the extra check also in innetgr --- ChangeLog | 1 + inet/getnetgrent_r.c | 5 +++++ 2 files changed, 6 insertions(+) (limited to 'inet/getnetgrent_r.c') diff --git a/ChangeLog b/ChangeLog index 9b2915e402..38149a6f36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * inet/getnetgrent_r.c (internal_getnetgrent_r): Fix check for known netgroups to read. + (innetgr): Likewise. 2011-07-05 Roland McGrath diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c index b588897df1..91cdcce468 100644 --- a/inet/getnetgrent_r.c +++ b/inet/getnetgrent_r.c @@ -389,6 +389,11 @@ innetgr (const char *netgroup, const char *host, const char *user, namep = namep->next) if (strcmp (entry.val.group, namep->name) == 0) break; + if (namep == NULL) + for (namep = entry.needed_groups; namep != NULL; + namep = namep->next) + if (strcmp (entry.val.group, namep->name) == 0) + break; if (namep == NULL && strcmp (netgroup, entry.val.group) != 0) { -- cgit 1.4.1