diff options
Diffstat (limited to 'security')
| -rw-r--r-- | security/selinux/hooks.c | 24 | ||||
| -rw-r--r-- | security/selinux/include/classmap.h | 15 |
2 files changed, 11 insertions, 28 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 650947a72a2b..9b40f4c0ac70 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
| @@ -1776,27 +1776,9 @@ static inline u32 open_file_to_av(struct file *file) | |||
| 1776 | { | 1776 | { |
| 1777 | u32 av = file_to_av(file); | 1777 | u32 av = file_to_av(file); |
| 1778 | 1778 | ||
| 1779 | if (selinux_policycap_openperm) { | 1779 | if (selinux_policycap_openperm) |
| 1780 | mode_t mode = file->f_path.dentry->d_inode->i_mode; | 1780 | av |= FILE__OPEN; |
| 1781 | /* | 1781 | |
| 1782 | * lnk files and socks do not really have an 'open' | ||
| 1783 | */ | ||
| 1784 | if (S_ISREG(mode)) | ||
| 1785 | av |= FILE__OPEN; | ||
| 1786 | else if (S_ISCHR(mode)) | ||
| 1787 | av |= CHR_FILE__OPEN; | ||
| 1788 | else if (S_ISBLK(mode)) | ||
| 1789 | av |= BLK_FILE__OPEN; | ||
| 1790 | else if (S_ISFIFO(mode)) | ||
| 1791 | av |= FIFO_FILE__OPEN; | ||
| 1792 | else if (S_ISDIR(mode)) | ||
| 1793 | av |= DIR__OPEN; | ||
| 1794 | else if (S_ISSOCK(mode)) | ||
| 1795 | av |= SOCK_FILE__OPEN; | ||
| 1796 | else | ||
| 1797 | printk(KERN_ERR "SELinux: WARNING: inside %s with " | ||
| 1798 | "unknown mode:%o\n", __func__, mode); | ||
| 1799 | } | ||
| 1800 | return av; | 1782 | return av; |
| 1801 | } | 1783 | } |
| 1802 | 1784 | ||
diff --git a/security/selinux/include/classmap.h b/security/selinux/include/classmap.h index d64603e10dbe..41990cbba760 100644 --- a/security/selinux/include/classmap.h +++ b/security/selinux/include/classmap.h | |||
| @@ -2,7 +2,8 @@ | |||
| 2 | "getattr", "setattr", "lock", "relabelfrom", "relabelto", "append" | 2 | "getattr", "setattr", "lock", "relabelfrom", "relabelto", "append" |
| 3 | 3 | ||
| 4 | #define COMMON_FILE_PERMS COMMON_FILE_SOCK_PERMS, "unlink", "link", \ | 4 | #define COMMON_FILE_PERMS COMMON_FILE_SOCK_PERMS, "unlink", "link", \ |
| 5 | "rename", "execute", "swapon", "quotaon", "mounton", "audit_access" | 5 | "rename", "execute", "swapon", "quotaon", "mounton", "audit_access", \ |
| 6 | "open" | ||
| 6 | 7 | ||
| 7 | #define COMMON_SOCK_PERMS COMMON_FILE_SOCK_PERMS, "bind", "connect", \ | 8 | #define COMMON_SOCK_PERMS COMMON_FILE_SOCK_PERMS, "bind", "connect", \ |
| 8 | "listen", "accept", "getopt", "setopt", "shutdown", "recvfrom", \ | 9 | "listen", "accept", "getopt", "setopt", "shutdown", "recvfrom", \ |
| @@ -43,22 +44,22 @@ struct security_class_mapping secclass_map[] = { | |||
| 43 | "quotaget", NULL } }, | 44 | "quotaget", NULL } }, |
| 44 | { "file", | 45 | { "file", |
| 45 | { COMMON_FILE_PERMS, | 46 | { COMMON_FILE_PERMS, |
| 46 | "execute_no_trans", "entrypoint", "execmod", "open", NULL } }, | 47 | "execute_no_trans", "entrypoint", "execmod", NULL } }, |
| 47 | { "dir", | 48 | { "dir", |
| 48 | { COMMON_FILE_PERMS, "add_name", "remove_name", | 49 | { COMMON_FILE_PERMS, "add_name", "remove_name", |
| 49 | "reparent", "search", "rmdir", "open", NULL } }, | 50 | "reparent", "search", "rmdir", NULL } }, |
| 50 | { "fd", { "use", NULL } }, | 51 | { "fd", { "use", NULL } }, |
| 51 | { "lnk_file", | 52 | { "lnk_file", |
| 52 | { COMMON_FILE_PERMS, NULL } }, | 53 | { COMMON_FILE_PERMS, NULL } }, |
| 53 | { "chr_file", | 54 | { "chr_file", |
| 54 | { COMMON_FILE_PERMS, | 55 | { COMMON_FILE_PERMS, |
| 55 | "execute_no_trans", "entrypoint", "execmod", "open", NULL } }, | 56 | "execute_no_trans", "entrypoint", "execmod", NULL } }, |
| 56 | { "blk_file", | 57 | { "blk_file", |
| 57 | { COMMON_FILE_PERMS, "open", NULL } }, | 58 | { COMMON_FILE_PERMS, NULL } }, |
| 58 | { "sock_file", | 59 | { "sock_file", |
| 59 | { COMMON_FILE_PERMS, "open", NULL } }, | 60 | { COMMON_FILE_PERMS, NULL } }, |
| 60 | { "fifo_file", | 61 | { "fifo_file", |
| 61 | { COMMON_FILE_PERMS, "open", NULL } }, | 62 | { COMMON_FILE_PERMS, NULL } }, |
| 62 | { "socket", | 63 | { "socket", |
| 63 | { COMMON_SOCK_PERMS, NULL } }, | 64 | { COMMON_SOCK_PERMS, NULL } }, |
| 64 | { "tcp_socket", | 65 | { "tcp_socket", |
