def AaEval.decide.acc

bend-osdev-apparmor@0.1.0.0 · eval.bend:178

import bend-osdev-apparmor@0.1.0.0/eval.bend as Eval
import Base
import bend-osdev-apparmor@0.1.0.0/perm.bend as P
import bend-osdev-apparmor@0.1.0.0/options.bend as O
import bend-osdev-apparmor@0.1.0.0/profile.bend as PR

178def AaEval.decide.acc(opts: O.AaOptions, flags: PR.AaFlags, +req: P.AaPerms, a: AaAcc) -> AaDecision:
179  match flags:
180    case PR.AaFlags{m, +fa}:
181      match a:
182        case AaAcc{al, +de, +au, qu}:
183          +granted = P.AaPerms.minus(al, de)
184          AaEval.decide.mode(m, P.AaPerms.covers(granted, req), P.AaPerms.meets(req, de), O.AaOptions.complain_deny(opts), AaEval.choose(Bool.or(fa, P.AaPerms.meets(req, au)), AaAudit{}, AaAllow{}), AaDeny{Bool.or(fa, Bool.not(P.AaPerms.covers(P.AaPerms.minus(qu, au), P.AaPerms.minus(req, granted))))})

Uses (13)

Used by (4)