mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
apparmor: compute policydb permission on profile load
Rather than computing policydb permissions for each access permissions can be computed once on profile load and stored for lookup. Signed-off-by: John Johansen <john.johansen@canonical.com>
This commit is contained in:
@@ -315,48 +315,6 @@ void aa_apply_modes_to_perms(struct aa_profile *profile, struct aa_perms *perms)
|
||||
*/
|
||||
}
|
||||
|
||||
static u32 map_other(u32 x)
|
||||
{
|
||||
return ((x & 0x3) << 8) | /* SETATTR/GETATTR */
|
||||
((x & 0x1c) << 18) | /* ACCEPT/BIND/LISTEN */
|
||||
((x & 0x60) << 19); /* SETOPT/GETOPT */
|
||||
}
|
||||
|
||||
static u32 map_xbits(u32 x)
|
||||
{
|
||||
return ((x & 0x1) << 7) |
|
||||
((x & 0x7e) << 9);
|
||||
}
|
||||
|
||||
void aa_compute_perms(struct aa_dfa *dfa, unsigned int state,
|
||||
struct aa_perms *perms)
|
||||
{
|
||||
/* This mapping is convulated due to history.
|
||||
* v1-v4: only file perms
|
||||
* v5: added policydb which dropped in perm user conditional to
|
||||
* gain new perm bits, but had to map around the xbits because
|
||||
* the userspace compiler was still munging them.
|
||||
* v9: adds using the xbits in policydb because the compiler now
|
||||
* supports treating policydb permission bits different.
|
||||
* Unfortunately there is not way to force auditing on the
|
||||
* perms represented by the xbits
|
||||
*/
|
||||
*perms = (struct aa_perms) {
|
||||
.allow = dfa_user_allow(dfa, state) |
|
||||
map_xbits(dfa_user_xbits(dfa, state)),
|
||||
.audit = dfa_user_audit(dfa, state),
|
||||
.quiet = dfa_user_quiet(dfa, state) |
|
||||
map_xbits(dfa_other_xbits(dfa, state)),
|
||||
};
|
||||
|
||||
/* for v5-v9 perm mapping in the policydb, the other set is used
|
||||
* to extend the general perm set
|
||||
*/
|
||||
perms->allow |= map_other(dfa_other_allow(dfa, state));
|
||||
perms->audit |= map_other(dfa_other_audit(dfa, state));
|
||||
perms->quiet |= map_other(dfa_other_quiet(dfa, state));
|
||||
}
|
||||
|
||||
/**
|
||||
* aa_perms_accum_raw - accumulate perms with out masking off overlapping perms
|
||||
* @accum - perms struct to accumulate into
|
||||
|
||||
Reference in New Issue
Block a user