]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
fuse2fs: fix normal (non-kernel) permissions checking
authorTheodore Ts'o <tytso@mit.edu>
Wed, 2 Jul 2025 02:58:39 +0000 (22:58 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 2 Jul 2025 03:07:15 +0000 (23:07 -0400)
Commit 9f69dfc4e275 ("fuse2fs: implement O_APPEND correctly") defined
a new flag, A_OK, to add support for testing whether the file is valid
for append operations.  This is relevant for the check_iflags_access()
function, but when are later testing operations mask against the inode
permissions, this new flag gets in the way and causes non-root users
attempting to create new inodes in a directory to fail.  Fix this by
masking off A_OK before doing these tests.

Fixes: 9f69dfc4e275 ("fuse2fs: implement O_APPEND correctly")
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/fuse2fs.c

index bb75d9421283ede27ac3d66fda95f948eb73d90a..d209bc790fbd361b1b50ebfd01b45faf93683074 100644 (file)
@@ -687,6 +687,9 @@ static int check_inum_access(struct fuse2fs *ff, ext2_ino_t ino, int mask)
                return -EACCES;
        }
 
+       /* Remove the O_APPEND flag before testing permissions */
+       mask &= ~A_OK;
+
        /* allow owner, if perms match */
        if (inode_uid(inode) == ctxt->uid) {
                if ((mask & (perms >> 6)) == mask)