- gbuf = (GETGROUPS_T *) xrealloc (gbuf, n * sizeof (GETGROUPS_T));
- ng = getgroups (n, gbuf);
- if (ng < n)
+ /* No need to worry about address arithmetic overflow here,
+ since the ancient systems that we're running on have low
+ limits on the number of secondary groups. */
+ gbuf = xmalloc (n * sizeof *gbuf);
+ n_groups = getgroups (n, gbuf);
+ if (n_groups < n)