diff options
| author | Mimi Zohar <zohar@linux.vnet.ibm.com> | 2016-01-28 13:10:36 -0500 |
|---|---|---|
| committer | Mimi Zohar <zohar@linux.vnet.ibm.com> | 2016-02-18 17:13:56 -0500 |
| commit | b5269ab3e29b17e3419c65986bcc1b54b798acc2 (patch) | |
| tree | 651781df3de569d41cacf95d618644f888ec476a /security | |
| parent | 1525b06d99b117198ea8d6c128ee5bf28ceb6723 (diff) | |
ima: refactor ima_policy_show() to display "ima_hooks" rules
Define and call a function to display the "ima_hooks" rules.
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Acked-by: Petko Manolov <petkan@mip-labs.com>
Acked-by: Dmitry Kasatkin <dmitry.kasatkin@huawei.com>
Diffstat (limited to 'security')
| -rw-r--r-- | security/integrity/ima/ima_policy.c | 63 |
1 files changed, 36 insertions, 27 deletions
diff --git a/security/integrity/ima/ima_policy.c b/security/integrity/ima/ima_policy.c index e0e18cc5930a..43b642557d6c 100644 --- a/security/integrity/ima/ima_policy.c +++ b/security/integrity/ima/ima_policy.c | |||
| @@ -903,6 +903,40 @@ void ima_policy_stop(struct seq_file *m, void *v) | |||
| 903 | #define mt(token) mask_tokens[token] | 903 | #define mt(token) mask_tokens[token] |
| 904 | #define ft(token) func_tokens[token] | 904 | #define ft(token) func_tokens[token] |
| 905 | 905 | ||
| 906 | /* | ||
| 907 | * policy_func_show - display the ima_hooks policy rule | ||
| 908 | */ | ||
| 909 | static void policy_func_show(struct seq_file *m, enum ima_hooks func) | ||
| 910 | { | ||
| 911 | char tbuf[64] = {0,}; | ||
| 912 | |||
| 913 | switch (func) { | ||
| 914 | case FILE_CHECK: | ||
| 915 | seq_printf(m, pt(Opt_func), ft(func_file)); | ||
| 916 | break; | ||
| 917 | case MMAP_CHECK: | ||
| 918 | seq_printf(m, pt(Opt_func), ft(func_mmap)); | ||
| 919 | break; | ||
| 920 | case BPRM_CHECK: | ||
| 921 | seq_printf(m, pt(Opt_func), ft(func_bprm)); | ||
| 922 | break; | ||
| 923 | case MODULE_CHECK: | ||
| 924 | seq_printf(m, pt(Opt_func), ft(func_module)); | ||
| 925 | break; | ||
| 926 | case FIRMWARE_CHECK: | ||
| 927 | seq_printf(m, pt(Opt_func), ft(func_firmware)); | ||
| 928 | break; | ||
| 929 | case POST_SETATTR: | ||
| 930 | seq_printf(m, pt(Opt_func), ft(func_post)); | ||
| 931 | break; | ||
| 932 | default: | ||
| 933 | snprintf(tbuf, sizeof(tbuf), "%d", func); | ||
| 934 | seq_printf(m, pt(Opt_func), tbuf); | ||
| 935 | break; | ||
| 936 | } | ||
| 937 | seq_puts(m, " "); | ||
| 938 | } | ||
| 939 | |||
| 906 | int ima_policy_show(struct seq_file *m, void *v) | 940 | int ima_policy_show(struct seq_file *m, void *v) |
| 907 | { | 941 | { |
| 908 | struct ima_rule_entry *entry = v; | 942 | struct ima_rule_entry *entry = v; |
| @@ -924,33 +958,8 @@ int ima_policy_show(struct seq_file *m, void *v) | |||
| 924 | 958 | ||
| 925 | seq_puts(m, " "); | 959 | seq_puts(m, " "); |
| 926 | 960 | ||
| 927 | if (entry->flags & IMA_FUNC) { | 961 | if (entry->flags & IMA_FUNC) |
| 928 | switch (entry->func) { | 962 | policy_func_show(m, entry->func); |
| 929 | case FILE_CHECK: | ||
| 930 | seq_printf(m, pt(Opt_func), ft(func_file)); | ||
| 931 | break; | ||
| 932 | case MMAP_CHECK: | ||
| 933 | seq_printf(m, pt(Opt_func), ft(func_mmap)); | ||
| 934 | break; | ||
| 935 | case BPRM_CHECK: | ||
| 936 | seq_printf(m, pt(Opt_func), ft(func_bprm)); | ||
| 937 | break; | ||
| 938 | case MODULE_CHECK: | ||
| 939 | seq_printf(m, pt(Opt_func), ft(func_module)); | ||
| 940 | break; | ||
| 941 | case FIRMWARE_CHECK: | ||
| 942 | seq_printf(m, pt(Opt_func), ft(func_firmware)); | ||
| 943 | break; | ||
| 944 | case POST_SETATTR: | ||
| 945 | seq_printf(m, pt(Opt_func), ft(func_post)); | ||
| 946 | break; | ||
| 947 | default: | ||
| 948 | snprintf(tbuf, sizeof(tbuf), "%d", entry->func); | ||
| 949 | seq_printf(m, pt(Opt_func), tbuf); | ||
| 950 | break; | ||
| 951 | } | ||
| 952 | seq_puts(m, " "); | ||
| 953 | } | ||
| 954 | 963 | ||
| 955 | if (entry->flags & IMA_MASK) { | 964 | if (entry->flags & IMA_MASK) { |
| 956 | if (entry->mask & MAY_EXEC) | 965 | if (entry->mask & MAY_EXEC) |
