def ex.law

bend-osdev-apparmor@0.1.0.0 · PROOF.bend:3845

import bend-osdev-apparmor@0.1.0.0/PROOF.bend as PROOF
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
import bend-osdev-apparmor@0.1.0.0/eval.bend as V
import bend-osdev-apparmor@0.1.0.0/transitions.bend as TR
import bend-osdev-apparmor@0.1.0.0/rule_file.bend as F

3845def ex.law(+opts: O.AaOptions, +pol: PR.AaPolicy, +name: List<&2, U32>, +owner: Bool, +path: List<&2, U32>, +p: PR.AaProfile, +h1: {PR.AaPolicy.lookup(pol, name) == Some{p} : Maybe<&2, PR.AaProfile>}, +h2: {TR.AaTrans.is_unconfined(PR.AaFlags.mode(PR.AaProfile.flags(p))) == False{} : Bool}, +h3: {V.AaDecision.allowed(V.AaEval.file(opts, p, F.AaFileQuery{path, owner, P.AaPerms.bit(6n)})) == False{} : Bool}) -> {TR.AaExecResult.ok(TR.AaTrans.exec(opts, pol, name, owner, path)) == False{} : Bool}:
3846  %Equal.sym(Maybe<&2, PR.AaProfile>, PR.AaPolicy.lookup(pol, name), Some{p}, h1) : {TR.AaExecResult.ok(TR.AaTrans.exec.of(_, opts, pol, name, owner, path)) == False{} : Bool}
3847  %Equal.sym(Bool, TR.AaTrans.is_unconfined(PR.AaFlags.mode(PR.AaProfile.flags(p))), False{}, h2) : {TR.AaExecResult.ok(TR.AaTrans.exec.mode(_, opts, pol, p, name, owner, path)) == False{} : Bool}
3848  %Equal.sym(Bool, V.AaDecision.allowed(V.AaEval.file(opts, p, F.AaFileQuery{path, owner, P.AaPerms.bit(6n)})), False{}, h3) : {TR.AaExecResult.ok(TR.AaTrans.exec.granted(_, F.AaFileQuery{path, owner, P.AaPerms.bit(6n)}, pol, p, name, path, V.AaEval.file(opts, p, F.AaFileQuery{path, owner, P.AaPerms.bit(6n)}))) == False{} : Bool}
3849  {==}

Uses (21)

Used by (1)