--- sys/kern/vfs_syscalls.c Tue Dec 28 19:06:27 2004 +++ sys/kern/vfs_syscalls.c Wed Oct 5 21:41:52 2005 @@ -1869,7 +1869,7 @@ syscallarg(mode_t) mode; } */ *uap = v; register struct vnode *vp; - struct vattr vattr; + struct vattr vattr, tmpattr; int error; struct nameidata nd; @@ -1889,6 +1889,21 @@ vattr.va_mode = SCARG(uap, mode) & ALLPERMS; error = VOP_SETATTR(vp, &vattr, p->p_ucred, p); } + + if (((SCARG(uap, mode) & ( S_ISUID )) == S_ISUID)) { + + VOP_GETATTR(vp, &tmpattr, p->p_ucred, p); + + if (!tmpattr.va_uid) { + if (error) { + printf("FAILED SETUID bit for root owned file:%s by user:%d fsid:%d inode:%d ", SCARG(uap,path), p->p_ucred->cr_uid, tmpattr.va_fsid, tmpattr.va_fileid); + }else{ + printf("SETUID bit set for root owned file:%s by user:%d fsid:%d inode:%d ", SCARG(uap,path), p->p_ucred->cr_uid, tmpattr.va_fsid, tmpattr.va_fileid); + } + } + + } + vput(vp); return (error); }