Commit 8cdc23a3 authored by Roberto Sassu's avatar Roberto Sassu Committed by Mimi Zohar

ima: show rules with IMA_INMASK correctly

Show the '^' character when a policy rule has flag IMA_INMASK.

Fixes: 80eae209 ("IMA: allow reading back the current IMA policy")
Signed-off-by: default avatarRoberto Sassu <roberto.sassu@huawei.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarMimi Zohar <zohar@linux.ibm.com>
parent 221be106
...@@ -1147,10 +1147,10 @@ enum { ...@@ -1147,10 +1147,10 @@ enum {
}; };
static const char *const mask_tokens[] = { static const char *const mask_tokens[] = {
"MAY_EXEC", "^MAY_EXEC",
"MAY_WRITE", "^MAY_WRITE",
"MAY_READ", "^MAY_READ",
"MAY_APPEND" "^MAY_APPEND"
}; };
#define __ima_hook_stringify(str) (#str), #define __ima_hook_stringify(str) (#str),
...@@ -1210,6 +1210,7 @@ int ima_policy_show(struct seq_file *m, void *v) ...@@ -1210,6 +1210,7 @@ int ima_policy_show(struct seq_file *m, void *v)
struct ima_rule_entry *entry = v; struct ima_rule_entry *entry = v;
int i; int i;
char tbuf[64] = {0,}; char tbuf[64] = {0,};
int offset = 0;
rcu_read_lock(); rcu_read_lock();
...@@ -1233,15 +1234,17 @@ int ima_policy_show(struct seq_file *m, void *v) ...@@ -1233,15 +1234,17 @@ int ima_policy_show(struct seq_file *m, void *v)
if (entry->flags & IMA_FUNC) if (entry->flags & IMA_FUNC)
policy_func_show(m, entry->func); policy_func_show(m, entry->func);
if (entry->flags & IMA_MASK) { if ((entry->flags & IMA_MASK) || (entry->flags & IMA_INMASK)) {
if (entry->flags & IMA_MASK)
offset = 1;
if (entry->mask & MAY_EXEC) if (entry->mask & MAY_EXEC)
seq_printf(m, pt(Opt_mask), mt(mask_exec)); seq_printf(m, pt(Opt_mask), mt(mask_exec) + offset);
if (entry->mask & MAY_WRITE) if (entry->mask & MAY_WRITE)
seq_printf(m, pt(Opt_mask), mt(mask_write)); seq_printf(m, pt(Opt_mask), mt(mask_write) + offset);
if (entry->mask & MAY_READ) if (entry->mask & MAY_READ)
seq_printf(m, pt(Opt_mask), mt(mask_read)); seq_printf(m, pt(Opt_mask), mt(mask_read) + offset);
if (entry->mask & MAY_APPEND) if (entry->mask & MAY_APPEND)
seq_printf(m, pt(Opt_mask), mt(mask_append)); seq_printf(m, pt(Opt_mask), mt(mask_append) + offset);
seq_puts(m, " "); seq_puts(m, " ");
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment