diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-01-18 11:59:33 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-01-18 11:59:33 +0900 |
| commit | 7baca66a56f67fa5722b689cbff747eac12b857e (patch) | |
| tree | a2e6bf668d2a5ea52b5e113c08d65141dbcd5101 /internal/proc | |
| parent | 27d2914286495bf83b163172d5084a91222e7ed7 (diff) | |
proc: remove duplicate compile-time fortify reference
This is no longer needed since shim and init are now part of the main program.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/proc')
| -rw-r--r-- | internal/proc/priv/shim/main.go | 10 | ||||
| -rw-r--r-- | internal/proc/priv/shim/manager.go | 2 | ||||
| -rw-r--r-- | internal/proc/self.go | 26 |
3 files changed, 28 insertions, 10 deletions
diff --git a/internal/proc/priv/shim/main.go b/internal/proc/priv/shim/main.go index 91ff8d28..3ade2868 100644 --- a/internal/proc/priv/shim/main.go +++ b/internal/proc/priv/shim/main.go @@ -37,14 +37,6 @@ func Main() { } } - // check path to fortify - var fortifyPath string - if p, ok := internal.Path(internal.Fortify); !ok { - fmsg.Fatal("invalid fortify path, this copy of fortify is not compiled correctly") - } else { - fortifyPath = p - } - // receive setup payload var ( payload Payload @@ -135,7 +127,7 @@ func Main() { // bind fortify inside sandbox innerSbin := path.Join(fst.Tmp, "sbin") fortifyInnerPath := path.Join(innerSbin, "fortify") - conf.Bind(fortifyPath, fortifyInnerPath) + conf.Bind(proc.MustExecutable(), fortifyInnerPath) conf.Symlink(fortifyInnerPath, path.Join(innerSbin, "init")) helper.BubblewrapName = payload.Exec[0] // resolved bwrap path by parent diff --git a/internal/proc/priv/shim/manager.go b/internal/proc/priv/shim/manager.go index 26b54925..1d1210b6 100644 --- a/internal/proc/priv/shim/manager.go +++ b/internal/proc/priv/shim/manager.go @@ -56,7 +56,7 @@ func (s *Shim) WaitFallback() chan error { func (s *Shim) Start() (*time.Time, error) { // prepare user switcher invocation var fsu string - if p, ok := internal.Check(internal.Fsu); !ok { + if p, ok := internal.Path(internal.Fsu); !ok { fmsg.Fatal("invalid fsu path, this copy of fortify is not compiled correctly") panic("unreachable") } else { diff --git a/internal/proc/self.go b/internal/proc/self.go new file mode 100644 index 00000000..6dc92eb7 --- /dev/null +++ b/internal/proc/self.go @@ -0,0 +1,26 @@ +package proc + +import ( + "os" + "sync" + + "git.gensokyo.uk/security/fortify/internal/fmsg" +) + +var ( + executable string + executableOnce sync.Once +) + +func copyExecutable() { + if name, err := os.Executable(); err != nil { + fmsg.Fatalf("cannot read executable path: %v", err) + } else { + executable = name + } +} + +func MustExecutable() string { + executableOnce.Do(copyExecutable) + return executable +} |
