diff options
author | Eric Paris <eparis@redhat.com> | 2010-07-23 17:43:57 +0200 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2010-08-02 07:35:07 +0200 |
commit | d09ca73979460b96d5d4684d588b188be9a1f57d (patch) | |
tree | 217543affc5c1c76181ffca00c23cfa69f1dd4f6 /security/selinux | |
parent | vfs: re-introduce MAY_CHDIR (diff) | |
download | linux-d09ca73979460b96d5d4684d588b188be9a1f57d.tar.xz linux-d09ca73979460b96d5d4684d588b188be9a1f57d.zip |
security: make LSMs explicitly mask off permissions
SELinux needs to pass the MAY_ACCESS flag so it can handle auditting
correctly. Presently the masking of MAY_* flags is done in the VFS. In
order to allow LSMs to decide what flags they care about and what flags
they don't just pass them all and the each LSM mask off what they don't
need. This patch should contain no functional changes to either the VFS or
any LSM.
Signed-off-by: Eric Paris <eparis@redhat.com>
Acked-by: Stephen D. Smalley <sds@tycho.nsa.gov>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'security/selinux')
-rw-r--r-- | security/selinux/hooks.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 85338f0c0481..0c98846f188d 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -2645,6 +2645,8 @@ static int selinux_inode_permission(struct inode *inode, int mask) { const struct cred *cred = current_cred(); + mask &= (MAY_READ|MAY_WRITE|MAY_EXEC|MAY_APPEND); + if (!mask) { /* No permission to check. Existence test. */ return 0; |