aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/proc/priv/shim/manager.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-01-19 18:38:13 +0900
committerOphestra <cat@gensokyo.uk>2025-01-19 18:38:13 +0900
commit2f705068658bf9c47a5fa829105111e46a7732a0 (patch)
tree4f75a66cb84cf5452c865afbdb9784adfded79b3 /internal/proc/priv/shim/manager.go
parentcae567c1090ef12e9837f7dec4f43d030ec8f6b2 (diff)
helper/bwrap: move sync to helper state
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/proc/priv/shim/manager.go')
-rw-r--r--internal/proc/priv/shim/manager.go13
1 files changed, 8 insertions, 5 deletions
diff --git a/internal/proc/priv/shim/manager.go b/internal/proc/priv/shim/manager.go
index 008b80aa..064f5c87 100644
--- a/internal/proc/priv/shim/manager.go
+++ b/internal/proc/priv/shim/manager.go
@@ -24,6 +24,8 @@ type Shim struct {
killFallback chan error
// monitor to shim encoder
encoder *gob.Encoder
+ // bwrap --sync-fd value
+ sync *uintptr
}
func (s *Shim) String() string {
@@ -46,8 +48,8 @@ func (s *Shim) Start(
aid string,
// string representation of supplementary group ids
supp []string,
- // shim setup payload
- payload *Payload,
+ // bwrap --sync-fd
+ syncFd *os.File,
) (*time.Time, error) {
// prepare user switcher invocation
var fsu string
@@ -80,9 +82,9 @@ func (s *Shim) Start(
s.cmd.Dir = "/"
// pass sync fd if set
- if payload.Bwrap.Sync() != nil {
- fd := proc.ExtraFile(s.cmd, payload.Bwrap.Sync())
- payload.Sync = &fd
+ if syncFd != nil {
+ fd := proc.ExtraFile(s.cmd, syncFd)
+ s.sync = &fd
}
fmsg.VPrintln("starting shim via fsu:", s.cmd)
@@ -106,6 +108,7 @@ func (s *Shim) Serve(ctx context.Context, payload *Payload) error {
}
defer func() { killShim() }()
+ payload.Sync = s.sync
encodeErr := make(chan error)
go func() { encodeErr <- s.encoder.Encode(payload) }()