X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/bbff7526453601d840cebfd383bbcead92da8d4a..55c583c5bfe3ac2556ecd99569000ac1ba8ce244:/gen/nfs.pc diff --git a/gen/nfs.pc b/gen/nfs.pc index 7ce9957b..877a2622 100644 --- a/gen/nfs.pc +++ b/gen/nfs.pc @@ -135,21 +135,6 @@ int do_lists(struct save_queue *lists) EXEC SQL END DECLARE SECTION; sprintf(file, "%s/list-", nfs_dir); -#if 0 - if (stat(file, &sb) == 0) - { - if ((ModDiff (&flag1, "users", sb.st_mtime)) || - (ModDiff (&flag2, "list", sb.st_mtime)) || - (ModDiff (&flag3, "imembers", sb.st_mtime)) || - (ModDiff (&flag4, "serverhosts", sb.st_mtime))) - exit(MR_DATE); - if (flag1 < 0 && flag2 < 0 && flag3 < 0 && flag4 < 0) - { - fprintf(stderr, "The lists do not need to be rebuilt.\n"); - return 0; - } - } -#endif /* build the list of everyone, and store it in a file whose name * corresponds to the empty list. @@ -218,6 +203,7 @@ struct user { void do_everyone(void) { + const buflen = MAXPATHLEN; char buf[MAXPATHLEN], *l; struct user *u; struct grp *g; @@ -244,7 +230,7 @@ void do_everyone(void) EXEC SQL DECLARE l_cursor CURSOR FOR SELECT gid, list_id FROM list - WHERE grouplist != 0 AND active != 0 + WHERE nfsgroup != 0 AND grouplist != 0 AND active != 0 ORDER BY list_id; EXEC SQL OPEN l_cursor; while (1) @@ -306,7 +292,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); }