From: jweiss Date: Wed, 1 Sep 1999 16:47:55 +0000 (+0000) Subject: don't overflow buf for people with really long group lists (sloan sucks) X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/commitdiff_plain/f9419ff508d644d32f48e87275556e7e31a79a0e don't overflow buf for people with really long group lists (sloan sucks) --- diff --git a/gen/nfs.pc b/gen/nfs.pc index 7ce9957b..ad4541f2 100644 --- a/gen/nfs.pc +++ b/gen/nfs.pc @@ -218,7 +218,8 @@ struct user { void do_everyone(void) { - char buf[MAXPATHLEN], *l; + const buflen = MAXPATHLEN; + char buf[buflen], *l; struct user *u; struct grp *g; struct bucket *b, **p; @@ -306,7 +307,16 @@ void do_everyone(void) u = (struct user *)b->data; sprintf(buf, "%s:%d:101", u->name, u->uid); for (g = u->lists; g; g = g->next) - strcat(buf, g->lid); + { + if ((strlen(buf) + strlen(g->lid)) <= buflen) + strcat(buf, g->lid); + else + { + com_err(whoami, 0, "truncated server-side grp list for %s", + u->name); + break; + } + } b->data = strdup(buf); fprintf(fd, "%s\n", buf); }