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)
committerEric Van Hensbergen <ericvh@kernel.org>
Thu, 28 Mar 2024 13:59:23 +0000 (13:59 +0000)
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>
fs/9p/vfs_inode.c

index b01b1bbf24937168f6fdabe920ddbad0bae3e5d9..9612fdb563a3e7b6e344624af4e1b19c6b5b6933 100644 (file)
@@ -83,7 +83,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;