Lines Matching refs:wcred
507 kern_setcred_copyin_supp_groups(struct setcred *const wcred, in kern_setcred_copyin_supp_groups() argument
519 if (wcred->sc_supp_groups_nb > ngroups_max) in kern_setcred_copyin_supp_groups()
528 *groups = wcred->sc_supp_groups_nb < CRED_SMALLGROUPS_NB ? in kern_setcred_copyin_supp_groups()
529 smallgroups : malloc((wcred->sc_supp_groups_nb + 1) * in kern_setcred_copyin_supp_groups()
532 error = copyin(wcred->sc_supp_groups, *groups + 1, in kern_setcred_copyin_supp_groups()
533 wcred->sc_supp_groups_nb * sizeof(*groups)); in kern_setcred_copyin_supp_groups()
536 wcred->sc_supp_groups = *groups + 1; in kern_setcred_copyin_supp_groups()
538 wcred->sc_supp_groups_nb = 0; in kern_setcred_copyin_supp_groups()
539 wcred->sc_supp_groups = NULL; in kern_setcred_copyin_supp_groups()
549 struct setcred wcred; in user_setcred() local
579 memcpy(&wcred, &wcred32, &wcred32.setcred32_copy_end - in user_setcred()
582 PTRIN_CP(wcred32, wcred, sc_supp_groups); in user_setcred()
583 PTRIN_CP(wcred32, wcred, sc_label); in user_setcred()
587 if (size != sizeof(wcred)) in user_setcred()
589 error = copyin(uwcred, &wcred, sizeof(wcred)); in user_setcred()
594 umac = wcred.sc_label; in user_setcred()
597 wcred.sc_label = NULL; in user_setcred()
604 error = kern_setcred_copyin_supp_groups(&wcred, flags, smallgroups, in user_setcred()
619 wcred.sc_label = &mac; in user_setcred()
623 error = kern_setcred(td, flags, &wcred, groups); in user_setcred()
626 if (wcred.sc_label != NULL) in user_setcred()
627 free_copied_label(wcred.sc_label); in user_setcred()
640 const struct setcred *wcred; member
648 return (user_setcred(td, uap->flags, uap->wcred, uap->size, false)); in sys_setcred()
661 struct setcred *const wcred, gid_t *preallocated_groups) in kern_setcred() argument
684 if (wcred->sc_supp_groups_nb > ngroups_max) in kern_setcred()
688 MPASS(preallocated_groups + 1 == wcred->sc_supp_groups); in kern_setcred()
690 groups = wcred->sc_supp_groups_nb < CRED_SMALLGROUPS_NB ? in kern_setcred()
692 malloc((wcred->sc_supp_groups_nb + 1) * in kern_setcred()
694 memcpy(groups + 1, wcred->sc_supp_groups, in kern_setcred()
695 wcred->sc_supp_groups_nb * sizeof(*groups)); in kern_setcred()
701 error = mac_set_proc_prepare(td, wcred->sc_label, in kern_setcred()
712 AUDIT_ARG_EUID(wcred->sc_uid); in kern_setcred()
713 uip = uifind(wcred->sc_uid); in kern_setcred()
716 AUDIT_ARG_RUID(wcred->sc_ruid); in kern_setcred()
717 ruip = uifind(wcred->sc_ruid); in kern_setcred()
720 AUDIT_ARG_SUID(wcred->sc_svuid); in kern_setcred()
723 AUDIT_ARG_EGID(wcred->sc_gid); in kern_setcred()
725 AUDIT_ARG_RGID(wcred->sc_rgid); in kern_setcred()
727 AUDIT_ARG_SGID(wcred->sc_svgid); in kern_setcred()
729 int ngrp = wcred->sc_supp_groups_nb; in kern_setcred()
738 wcred->sc_supp_groups_nb = ngrp - 1; in kern_setcred()
749 crextend(new_cred, wcred->sc_supp_groups_nb + 1); in kern_setcred()
772 change_svuid(new_cred, wcred->sc_svuid); in kern_setcred()
781 groups[0] = flags & SETCREDF_GID ? wcred->sc_gid : in kern_setcred()
783 crsetgroups_internal(new_cred, wcred->sc_supp_groups_nb + 1, in kern_setcred()
786 change_egid(new_cred, wcred->sc_gid); in kern_setcred()
788 change_rgid(new_cred, wcred->sc_rgid); in kern_setcred()
790 change_svgid(new_cred, wcred->sc_svgid); in kern_setcred()