def CapAdjust.ambient_raise.go

bend-osdev-caps@0.1.0.0 · adjust.bend:101

import bend-osdev-caps@0.1.0.0/adjust.bend as Adjust
import Base
import bend-osdev-caps@0.1.0.0/caps.bend as C

101def CapAdjust.ambient_raise.go(v: Bool, locked: Bool, allowed: Bool, +c: C.CapCred, x: U32) -> Result<&2, &2, C.CapsError, C.CapCred>:
102  match v:
103    case False{}:
104      Fail{C.CapsInvalidCap{}}
105    case True{}:
106      match locked:
107        case True{}:
108          Fail{C.CapsAmbientRaiseLocked{}}
109        case False{}:
110          match allowed:
111            case False{}:
112              Fail{C.CapsAmbientNotAllowed{}}
113            case True{}:
114              +s = C.CapCred.sets(c)
115              Done{C.CapCred.with_sets(c, C.CapState.with_ambient(s, C.CapSet.add(C.CapState.ambient(s), x)))}

Uses (10)

Used by (3)