linux/fs/ext2
Ernesto A. Fernández c698e2b3c6 ext2: preserve i_mode if ext2_set_acl() fails
commit fe26569eb9 upstream.

When changing a file's acl mask, ext2_set_acl() will first set the group
bits of i_mode to the value of the mask, and only then set the actual
extended attribute representing the new acl.

If the second part fails (due to lack of space, for example) and the file
had no acl attribute to begin with, the system will from now on assume
that the mask permission bits are actual group permission bits, potentially
granting access to the wrong users.

Prevent this by only changing the inode mode after the acl has been set.

[JK: Rebased on top of "ext2: Don't clear SGID when inheriting ACLs"]
Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2017-10-12 15:28:07 +01:00
..
acl.c ext2: preserve i_mode if ext2_set_acl() fails 2017-10-12 15:28:07 +01:00
acl.h ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
balloc.c Ext2: remove the static function release_blocks to optimize the kernel 2013-02-07 16:44:56 +01:00
dir.c [readdir] simple local unixlike: switch to ->iterate() 2013-06-29 12:46:47 +04:00
ext2.h userns: Convert ext2 to use kuid/kgid where appropriate. 2012-05-15 14:59:26 -07:00
file.c ->splice_write() via ->write_iter() 2014-06-12 00:18:51 -04:00
ialloc.c ext2/3: use prandom_u32() instead of get_random_bytes() 2014-03-04 12:19:03 +01:00
inode.c fs: Give dentry to inode_change_ok() instead of inode 2017-02-23 03:53:52 +00:00
ioctl.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
Kconfig fs/Kconfig: move ext2, ext3, ext4, JBD, JBD2 out 2008-10-20 11:43:59 -07:00
Makefile switch ext2 to simple_fsync() 2009-06-11 21:36:12 -04:00
namei.c ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
super.c Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs 2014-04-07 17:59:17 -07:00
symlink.c ext2: symlink must be handled via filesystem specific operation 2010-04-12 21:11:25 +02:00
xattr.c ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
xattr.h ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
xattr_security.c fs: Mark function as static in ext2/xattr_security.c 2014-03-03 11:30:59 +01:00
xattr_trusted.c migrate ext2_fs.h guts to fs/ext2/ext2.h 2012-03-31 16:03:16 -04:00
xattr_user.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
xip.c ext2: Fix fs corruption in ext2_get_xip_mem() 2013-11-05 11:26:47 +01:00
xip.h xip: support non-struct page backed memory 2008-04-28 08:58:23 -07:00