Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_exec.c
Show First 20 Lines • Show All 516 Lines • ▼ Show 20 Lines | #endif | ||||
credential_changing |= (attr.va_mode & S_ISGID) && | credential_changing |= (attr.va_mode & S_ISGID) && | ||||
oldcred->cr_gid != attr.va_gid; | oldcred->cr_gid != attr.va_gid; | ||||
#ifdef MAC | #ifdef MAC | ||||
will_transition = mac_vnode_execve_will_transition(oldcred, imgp->vp, | will_transition = mac_vnode_execve_will_transition(oldcred, imgp->vp, | ||||
interpvplabel, imgp); | interpvplabel, imgp); | ||||
credential_changing |= will_transition; | credential_changing |= will_transition; | ||||
#endif | #endif | ||||
/* Don't inherit PROC_PDEATHSIG_SET value if setuid/setgid. */ | |||||
if (credential_changing) | |||||
imgp->proc->p_pdeathsig = 0; | |||||
if (credential_changing && | if (credential_changing && | ||||
#ifdef CAPABILITY_MODE | #ifdef CAPABILITY_MODE | ||||
((oldcred->cr_flags & CRED_FLAG_CAPMODE) == 0) && | ((oldcred->cr_flags & CRED_FLAG_CAPMODE) == 0) && | ||||
#endif | #endif | ||||
(imgp->vp->v_mount->mnt_flag & MNT_NOSUID) == 0 && | (imgp->vp->v_mount->mnt_flag & MNT_NOSUID) == 0 && | ||||
(p->p_flag & P_TRACED) == 0) { | (p->p_flag & P_TRACED) == 0) { | ||||
imgp->credential_setid = true; | imgp->credential_setid = true; | ||||
VOP_UNLOCK(imgp->vp, 0); | VOP_UNLOCK(imgp->vp, 0); | ||||
▲ Show 20 Lines • Show All 1,209 Lines • Show Last 20 Lines |