summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--nis/nss_nisplus/nisplus-publickey.c8
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 49e28b38b7..b701bae888 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2006-04-30 Ulrich Drepper <drepper@redhat.com>
+ * nis/nss_nisplus/nisplus-publickey.c (parse_grp_str): PIDLIST is
+ supposed to have NGRPS elements.
+
* nis/nss_nisplus/nisplus-parser.c: Minor optimizations and
cleanups. Avoid copying data if it can be used in the old place.
diff --git a/nis/nss_nisplus/nisplus-publickey.c b/nis/nss_nisplus/nisplus-publickey.c
index fe269b2c48..f6b32f8827 100644
--- a/nis/nss_nisplus/nisplus-publickey.c
+++ b/nis/nss_nisplus/nisplus-publickey.c
@@ -226,8 +226,12 @@ parse_grp_str (const char *s, gid_t *gidp, int *gidlenp, gid_t *gidlist,
gidlen = 0;
/* After strtoul() ep should point to the marker ',', which means
- here starts a new value. */
- while (ep != NULL && *ep == ',')
+ here starts a new value.
+
+ The Sun man pages show that GIDLIST should contain at least NGRPS
+ elements. Limiting the number written by this value is the best
+ we can do. */
+ while (ep != NULL && *ep == ',' && gidlen < NGRPS)
{
ep++;
s = ep;