aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/seal.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-02-19 01:10:37 +0900
committerOphestra <cat@gensokyo.uk>2025-02-19 01:10:37 +0900
commit53571f030e86884bc13fe1d3760ac6bf51d2938b (patch)
treefaf32418ba2d8ba98f4254c19e61c40b23b9f88f /internal/app/seal.go
parentaa164081e1c2c477059d9e321675c217eb8ebeb6 (diff)
app: embed appSeal in app struct
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/app/seal.go')
-rw-r--r--internal/app/seal.go24
1 files changed, 12 insertions, 12 deletions
diff --git a/internal/app/seal.go b/internal/app/seal.go
index 8808d12e..9fce8f2c 100644
--- a/internal/app/seal.go
+++ b/internal/app/seal.go
@@ -79,10 +79,10 @@ type sealedExtraPerm struct {
// Seal seals the app launch context
func (a *app) Seal(config *fst.Config) error {
- a.lock.Lock()
- defer a.lock.Unlock()
+ a.mu.Lock()
+ defer a.mu.Unlock()
- if a.seal != nil {
+ if a.appSeal != nil {
panic("app sealed twice")
}
@@ -103,7 +103,7 @@ func (a *app) Seal(config *fst.Config) error {
seal.ct = ct
// fetch system constants
- seal.Paths = a.os.Paths()
+ seal.Paths = a.sys.Paths()
// pass through config values
seal.id = a.id.String()
@@ -119,7 +119,7 @@ func (a *app) Seal(config *fst.Config) error {
if config.Confinement.Sandbox != nil && config.Confinement.Sandbox.MapRealUID {
// some programs fail to connect to dbus session running as a different uid, so a
// separate workaround is introduced to map priv-side caller uid in namespace
- mapuid = a.os.Geteuid()
+ mapuid = a.sys.Geteuid()
}
seal.sys.mapuid = newInt(mapuid)
seal.sys.runtime = path.Join("/run/user", seal.sys.mapuid.String())
@@ -152,7 +152,7 @@ func (a *app) Seal(config *fst.Config) error {
}
// invoke fsu for full uid
- if u, err := a.os.Uid(seal.sys.user.aid.unwrap()); err != nil {
+ if u, err := a.sys.Uid(seal.sys.user.aid.unwrap()); err != nil {
return err
} else {
seal.sys.user.uid = newInt(u)
@@ -161,7 +161,7 @@ func (a *app) Seal(config *fst.Config) error {
// resolve supplementary group ids from names
seal.sys.user.supp = make([]string, len(config.Confinement.Groups))
for i, name := range config.Confinement.Groups {
- if g, err := a.os.LookupGroup(name); err != nil {
+ if g, err := a.sys.LookupGroup(name); err != nil {
return fmsg.WrapError(err,
fmt.Sprintf("unknown group %q", name))
} else {
@@ -204,7 +204,7 @@ func (a *app) Seal(config *fst.Config) error {
AutoEtc: true,
}
// bind entries in /
- if d, err := a.os.ReadDir("/"); err != nil {
+ if d, err := a.sys.ReadDir("/"); err != nil {
return err
} else {
b := make([]*fst.FilesystemConfig, 0, len(d))
@@ -226,7 +226,7 @@ func (a *app) Seal(config *fst.Config) error {
// hide nscd from sandbox if present
nscd := "/var/run/nscd"
- if _, err := a.os.Stat(nscd); !errors.Is(err, fs.ErrNotExist) {
+ if _, err := a.sys.Stat(nscd); !errors.Is(err, fs.ErrNotExist) {
conf.Override = append(conf.Override, nscd)
}
// bind GPU stuff
@@ -239,7 +239,7 @@ func (a *app) Seal(config *fst.Config) error {
config.Confinement.Sandbox = conf
}
seal.directWayland = config.Confinement.Sandbox.DirectWayland
- if b, err := config.Confinement.Sandbox.Bwrap(a.os); err != nil {
+ if b, err := config.Confinement.Sandbox.Bwrap(a.sys); err != nil {
return err
} else {
seal.sys.bwrap = b
@@ -265,7 +265,7 @@ func (a *app) Seal(config *fst.Config) error {
seal.Enablements = config.Confinement.Enablements
// this method calls all share methods in sequence
- if err := seal.setupShares([2]*dbus.Config{config.Confinement.SessionBus, config.Confinement.SystemBus}, a.os); err != nil {
+ if err := seal.setupShares([2]*dbus.Config{config.Confinement.SessionBus, config.Confinement.SystemBus}, a.sys); err != nil {
return err
}
@@ -274,6 +274,6 @@ func (a *app) Seal(config *fst.Config) error {
seal.sys.user.uid, seal.sys.user.username, config.Confinement.Groups, config.Command)
// seal app and release lock
- a.seal = seal
+ a.appSeal = seal
return nil
}