Lines Matching defs:ngrp
99 groups_check_positive_len(int ngrp)
101 MPASS2(ngrp >= 0, "negative number of groups");
104 groups_check_max_len(int ngrp)
106 MPASS2(ngrp <= ngroups_max, "too many supplementary groups");
109 static void groups_normalize(int *ngrp, gid_t *groups);
110 static void crsetgroups_internal(struct ucred *cr, int ngrp,
318 int ngrp, error;
326 ngrp = cred->cr_ngroups + 1;
330 } else if (uap->gidsetsize < ngrp) {
337 (ngrp - 1) * sizeof(gid_t));
340 td->td_retval[0] = ngrp;
356 int ngrp, error;
360 ngrp = cred->cr_ngroups;
365 if (uap->gidsetsize < ngrp)
368 error = copyout(cred->cr_groups, uap->gidset, ngrp * sizeof(gid_t));
370 td->td_retval[0] = ngrp;
1296 int ngrp, error;
1298 ngrp = *ngrpp;
1300 if (ngrp < 0 || ngrp > ngroups_max)
1303 AUDIT_ARG_GROUPSET(groups, ngrp);
1305 groups_normalize(&ngrp, groups);
1306 *ngrpp = ngrp;
1309 crextend(newcred, ngrp);
1320 error = mac_cred_check_setgroups(oldcred, ngrp,
1321 ngrp == 0 ? NULL : groups);
1330 crsetgroups_internal(newcred, ngrp, groups);
1742 groups_check_normalized(int ngrp, const gid_t *groups)
1746 groups_check_positive_len(ngrp);
1747 groups_check_max_len(ngrp);
1749 if (ngrp <= 1)
1753 for (int i = 1; i < ngrp; ++i) {
2928 groups_normalize(int *ngrp, gid_t *groups)
2933 groups_check_positive_len(*ngrp);
2934 groups_check_max_len(*ngrp);
2936 if (*ngrp <= 1)
2939 qsort(groups, *ngrp, sizeof(*groups), gidp_cmp);
2944 for (int i = ins_idx; i < *ngrp; ++i) {
2954 *ngrp = ins_idx;
2956 groups_check_normalized(*ngrp, groups);
2962 * 'ngrp' must be strictly positive. Either the passed 'groups' array must have
2972 crsetgroups_internal(struct ucred *cr, int ngrp, const gid_t *groups)
2976 MPASS2(cr->cr_agroups >= ngrp, "'cr_agroups' too small");
2977 groups_check_positive_len(ngrp);
2979 bcopy(groups, cr->cr_groups, ngrp * sizeof(gid_t));
2980 cr->cr_ngroups = ngrp;
2988 * before with 'ngrp' or greater). Truncates the list to ngroups_max if
2989 * it is too large. Array 'groups' doesn't need to be sorted. 'ngrp' must be
2993 crsetgroups(struct ucred *cr, int ngrp, const gid_t *groups)
2996 if (ngrp > ngroups_max)
2997 ngrp = ngroups_max;
2999 if (ngrp == 0) {
3012 crextend(cr, ngrp);
3013 crsetgroups_internal(cr, ngrp, groups);
3026 crsetgroups_and_egid(struct ucred *cr, int ngrp, const gid_t *groups,
3029 if (ngrp == 0) {
3036 crsetgroups(cr, ngrp - 1, groups + 1);