diff --git a/capability/capability.go b/capability/capability.go index 1b36f5f..587c432 100644 --- a/capability/capability.go +++ b/capability/capability.go @@ -59,6 +59,9 @@ type Capabilities interface { // Apply apply the capabilities settings, so all changes will take // effect. Apply(kind CapType) error + + // SetApplyMode set the mode when appling the capabilities settings + SetApplyMode(mode ApplyMode) } // NewPid initializes a new [Capabilities] object for given pid when diff --git a/capability/capability_linux.go b/capability/capability_linux.go index f4bcfe4..a06986e 100644 --- a/capability/capability_linux.go +++ b/capability/capability_linux.go @@ -118,10 +118,11 @@ func newPid(pid int) (c Capabilities, retErr error) { } type capsV3 struct { - hdr capHeader - data [2]capData - bounds [2]uint32 - ambient [2]uint32 + hdr capHeader + data [2]capData + bounds [2]uint32 + ambient [2]uint32 + applyMode ApplyMode } func (c *capsV3) Get(which CapType, what Cap) bool { @@ -327,7 +328,7 @@ func (c *capsV3) Load() (err error) { return } -func (c *capsV3) Apply(kind CapType) (err error) { +func (c *capsV3) Apply(kind CapType) (retErr error) { last, err := LastCap() if err != nil { return err @@ -336,7 +337,7 @@ func (c *capsV3) Apply(kind CapType) (err error) { var data [2]capData err = capget(&c.hdr, &data[0]) if err != nil { - return + return err } if (1<