syscall_fs2: chown rules
authorAlan Cox <alan@linux.intel.com>
Fri, 25 Mar 2016 20:24:41 +0000 (20:24 +0000)
committerAlan Cox <alan@linux.intel.com>
Fri, 25 Mar 2016 20:24:41 +0000 (20:24 +0000)
Under non-historic unix you don't get to chown a file to a group you are not
a member of

Kernel/syscall_fs2.c

index 3ef7763..41cd1c7 100644 (file)
@@ -244,7 +244,8 @@ arg_t _fchmod(void)
 
 static int chown_op(inoptr ino)
 {
-       if (ino->c_node.i_uid != udata.u_euid && esuper())
+       if ((ino->c_node.i_uid != udata.u_euid ||
+               (group != udata.u_gid &&  !in_group(group))) && esuper())
                return (-1);
        if (ino->c_flags & CRDONLY) {
                udata.u_error = EROFS;