diff options
author | John Johansen <john.johansen@canonical.com> | 2023-01-29 02:13:56 -0800 |
---|---|---|
committer | John Johansen <john.johansen@canonical.com> | 2025-01-18 06:47:12 -0800 |
commit | 0bc8c6862faaa80a2c89c73cc3936cbe2d35235c (patch) | |
tree | 1dfeb991aa228745db3f7da6ecbfdaf79145f00f | |
parent | 46b9b994dd554099b3ca74a20a0d1fb392c83a87 (diff) |
apparmor: switch signal mediation to use RULE_MEDIATES
Currently signal mediation is using a hard coded form of the
RULE_MEDIATES check. This hides the intended semantics, and means this
specific check won't pickup any changes or improvements made in the
RULE_MEDIATES check. Switch to using RULE_MEDIATES().
Signed-off-by: John Johansen <john.johansen@canonical.com>
-rw-r--r-- | security/apparmor/ipc.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/security/apparmor/ipc.c b/security/apparmor/ipc.c index 0cdf4340b02d..3566d875645e 100644 --- a/security/apparmor/ipc.c +++ b/security/apparmor/ipc.c @@ -85,16 +85,16 @@ static int profile_signal_perm(const struct cred *cred, struct aa_perms perms; aa_state_t state; - if (profile_unconfined(profile) || - !ANY_RULE_MEDIATES(&profile->rules, AA_CLASS_SIGNAL)) + if (profile_unconfined(profile)) return 0; ad->subj_cred = cred; ad->peer = peer; /* TODO: secondary cache check <profile, profile, perm> */ - state = aa_dfa_next(rules->policy->dfa, - rules->policy->start[AA_CLASS_SIGNAL], - ad->signal); + state = RULE_MEDIATES(rules, AA_CLASS_SIGNAL); + if (!state) + return 0; + state = aa_dfa_next(rules->policy->dfa, state, ad->signal); aa_label_match(profile, rules, peer, state, false, request, &perms); aa_apply_modes_to_perms(profile, &perms); return aa_check_perms(profile, &perms, request, ad, audit_signal_cb); |