]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fs/9p: only translate RWX permissions for plain 9P2000
authorJoakim Sindholt <opensource@zhasha.com>
Mon, 18 Mar 2024 11:22:31 +0000 (12:22 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2024 09:43:52 +0000 (11:43 +0200)
[ Upstream commit cd25e15e57e68a6b18dc9323047fe9c68b99290b ]

Garbage in plain 9P2000's perm bits is allowed through, which causes it
to be able to set (among others) the suid bit. This was presumably not
the intent since the unix extended bits are handled explicitly and
conditionally on .u.

Signed-off-by: Joakim Sindholt <opensource@zhasha.com>
Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/9p/vfs_inode.c

index b82423a72f685bfb429d1b73a0a8dd382c78b2bf..b1107b424bf64e20c1262e567eb76c44799666ce 100644 (file)
@@ -86,7 +86,7 @@ static int p9mode2perm(struct v9fs_session_info *v9ses,
        int res;
        int mode = stat->mode;
 
-       res = mode & S_IALLUGO;
+       res = mode & 0777; /* S_IRWXUGO */
        if (v9fs_proto_dotu(v9ses)) {
                if ((mode & P9_DMSETUID) == P9_DMSETUID)
                        res |= S_ISUID;