devfs_vnops.c (de592112e1083b4ac4e4fc2c090db7ef2ef01570) devfs_vnops.c (56f21b9d74a516a6c2f67d09e1b6c588bfa54c6a)
1/*
2 * Copyright (c) 1992, 1993
3 * The Regents of the University of California. All rights reserved.
4 * Copyright (c) 2000
5 * Poul-Henning Kamp. All rights reserved.
6 *
7 * This code is derived from software donated to Berkeley by
8 * Jan-Simon Pendry.

--- 752 unchanged lines hidden (view full) ---

761 uid = vap->va_uid;
762 if (vap->va_gid == (gid_t)VNOVAL)
763 gid = de->de_gid;
764 else
765 gid = vap->va_gid;
766 if (uid != de->de_uid || gid != de->de_gid) {
767 if (((ap->a_cred->cr_uid != de->de_uid) || uid != de->de_uid ||
768 (gid != de->de_gid && !groupmember(gid, ap->a_cred))) &&
1/*
2 * Copyright (c) 1992, 1993
3 * The Regents of the University of California. All rights reserved.
4 * Copyright (c) 2000
5 * Poul-Henning Kamp. All rights reserved.
6 *
7 * This code is derived from software donated to Berkeley by
8 * Jan-Simon Pendry.

--- 752 unchanged lines hidden (view full) ---

761 uid = vap->va_uid;
762 if (vap->va_gid == (gid_t)VNOVAL)
763 gid = de->de_gid;
764 else
765 gid = vap->va_gid;
766 if (uid != de->de_uid || gid != de->de_gid) {
767 if (((ap->a_cred->cr_uid != de->de_uid) || uid != de->de_uid ||
768 (gid != de->de_gid && !groupmember(gid, ap->a_cred))) &&
769 (error = suser_cred(ap->a_td->td_ucred, PRISON_ROOT)) != 0)
769 (error = suser_cred(ap->a_td->td_ucred, SUSER_ALLOWJAIL)) != 0)
770 return (error);
771 de->de_uid = uid;
772 de->de_gid = gid;
773 c = 1;
774 }
775
776 if (vap->va_mode != (mode_t)VNOVAL) {
777 if ((ap->a_cred->cr_uid != de->de_uid) &&
770 return (error);
771 de->de_uid = uid;
772 de->de_gid = gid;
773 c = 1;
774 }
775
776 if (vap->va_mode != (mode_t)VNOVAL) {
777 if ((ap->a_cred->cr_uid != de->de_uid) &&
778 (error = suser_cred(ap->a_td->td_ucred, PRISON_ROOT)))
778 (error = suser_cred(ap->a_td->td_ucred, SUSER_ALLOWJAIL)))
779 return (error);
780 de->de_mode = vap->va_mode;
781 c = 1;
782 }
783
784 if (vap->va_atime.tv_sec != VNOVAL || vap->va_mtime.tv_sec != VNOVAL) {
785 /* See the comment in ufs_vnops::ufs_setattr(). */
786 if ((error = VOP_ACCESS(vp, VADMIN, ap->a_cred, ap->a_td)) &&

--- 136 unchanged lines hidden ---
779 return (error);
780 de->de_mode = vap->va_mode;
781 c = 1;
782 }
783
784 if (vap->va_atime.tv_sec != VNOVAL || vap->va_mtime.tv_sec != VNOVAL) {
785 /* See the comment in ufs_vnops::ufs_setattr(). */
786 if ((error = VOP_ACCESS(vp, VADMIN, ap->a_cred, ap->a_td)) &&

--- 136 unchanged lines hidden ---