#if defined(AFS_LINUX26_ENV)
struct group_info *group_info;
gid_t g0, g1;
+ struct group_info *tmp;
+ int i;
+ int need_space = 0;
AFS_STATCNT(setpag);
group_info = afs_getgroups(*cr);
if (group_info->ngroups < 2
|| afs_get_pag_from_groups(GROUP_AT(group_info, 0),
- GROUP_AT(group_info, 1)) == NOPAG) {
+ GROUP_AT(group_info, 1)) == NOPAG)
/* We will have to make sure group_info is big enough for pag */
- struct group_info *tmp;
- int i;
-
- tmp = groups_alloc(group_info->ngroups + 2);
- for (i = 0; i < group_info->ngroups; ++i)
- GROUP_AT(tmp, i + 2) = GROUP_AT(group_info, i);
- put_group_info(group_info);
- group_info = tmp;
- }
+ need_space = 2;
+
+ tmp = groups_alloc(group_info->ngroups + need_space);
+
+ for (i = 0; i < group_info->ngroups; ++i)
+ GROUP_AT(tmp, i + need_space) = GROUP_AT(group_info, i);
+ group_info = tmp;
*newpag = (pagvalue == -1 ? genpag() : pagvalue);
afs_get_groups_from_pag(*newpag, &g0, &g1);