Sean Finney wrote: Previously, in auth_unix_gid, group lists were stored in an array of hard-coded length 100, and in the situation that the group lists for a particular call were too large, the array was swapped with a dynamically allocated/freed buffer. For environments where users are commonly in a large number of groups, this isn't an ideal approach. Instead, make the group list static scoped to the function, and use malloc/realloc to grow it on an as-needed basis. I would re-word this. The list isn't static, the list pointer is. I don't think you need to mention that, it's just confusing. "Use malloc/realloc to grow the list on an as-needed basis." + groups = malloc(sizeof(gid_t)*INITIAL_MANAGED_GROUPS); Style nit: Put blanks around the "*". I was going to suggest you first call getgrouplist with groups set to 0 so you can always alloc() the correct size list, but then I found this in the man page: BUGS In glibc versions before 2.3.3, the implementation of this function contains a buffer-overrun bug: it returns the complete list of groups for user in the array groups, even when the number of groups exceeds *ngroups. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html