diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-02-08 13:03:45 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-02-08 13:03:45 +0900 |
| commit | e14923ae530dda0601c204fe17ac1956f54a45b0 (patch) | |
| tree | 1578bbc4c08d9afc94c4b009cd2bf64260574f05 /internal | |
| parent | 7aff3ead3afaa7461e0054fbef23fb571b4add0a (diff) | |
helper/proc: move package out of internal
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/app/app.go | 2 | ||||
| -rw-r--r-- | internal/app/start.go | 2 | ||||
| -rw-r--r-- | internal/priv/init/early.go (renamed from internal/proc/priv/init/early.go) | 0 | ||||
| -rw-r--r-- | internal/priv/init/main.go (renamed from internal/proc/priv/init/main.go) | 2 | ||||
| -rw-r--r-- | internal/priv/init/payload.go (renamed from internal/proc/priv/init/payload.go) | 0 | ||||
| -rw-r--r-- | internal/priv/shim/main.go (renamed from internal/proc/priv/shim/main.go) | 4 | ||||
| -rw-r--r-- | internal/priv/shim/manager.go (renamed from internal/proc/priv/shim/manager.go) | 2 | ||||
| -rw-r--r-- | internal/priv/shim/payload.go (renamed from internal/proc/priv/shim/payload.go) | 0 | ||||
| -rw-r--r-- | internal/proc/fd.go | 45 | ||||
| -rw-r--r-- | internal/proc/files.go | 17 | ||||
| -rw-r--r-- | internal/proc/self.go | 26 |
11 files changed, 6 insertions, 94 deletions
diff --git a/internal/app/app.go b/internal/app/app.go index 30f893a9..34b59bfc 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -6,7 +6,7 @@ import ( "git.gensokyo.uk/security/fortify/fst" "git.gensokyo.uk/security/fortify/internal/linux" - "git.gensokyo.uk/security/fortify/internal/proc/priv/shim" + "git.gensokyo.uk/security/fortify/internal/priv/shim" ) type App interface { diff --git a/internal/app/start.go b/internal/app/start.go index 96198df5..aba331e7 100644 --- a/internal/app/start.go +++ b/internal/app/start.go @@ -11,7 +11,7 @@ import ( "git.gensokyo.uk/security/fortify/helper" "git.gensokyo.uk/security/fortify/internal/fmsg" - "git.gensokyo.uk/security/fortify/internal/proc/priv/shim" + "git.gensokyo.uk/security/fortify/internal/priv/shim" "git.gensokyo.uk/security/fortify/internal/state" "git.gensokyo.uk/security/fortify/internal/system" ) diff --git a/internal/proc/priv/init/early.go b/internal/priv/init/early.go index cc1c2f7e..cc1c2f7e 100644 --- a/internal/proc/priv/init/early.go +++ b/internal/priv/init/early.go diff --git a/internal/proc/priv/init/main.go b/internal/priv/init/main.go index d9f57b3e..4c69312e 100644 --- a/internal/proc/priv/init/main.go +++ b/internal/priv/init/main.go @@ -8,9 +8,9 @@ import ( "syscall" "time" + "git.gensokyo.uk/security/fortify/helper/proc" "git.gensokyo.uk/security/fortify/internal" "git.gensokyo.uk/security/fortify/internal/fmsg" - "git.gensokyo.uk/security/fortify/internal/proc" ) const ( diff --git a/internal/proc/priv/init/payload.go b/internal/priv/init/payload.go index d1dc9ec3..d1dc9ec3 100644 --- a/internal/proc/priv/init/payload.go +++ b/internal/priv/init/payload.go diff --git a/internal/proc/priv/shim/main.go b/internal/priv/shim/main.go index 7ad0a44b..4dccb876 100644 --- a/internal/proc/priv/shim/main.go +++ b/internal/priv/shim/main.go @@ -8,11 +8,11 @@ import ( "git.gensokyo.uk/security/fortify/fst" "git.gensokyo.uk/security/fortify/helper" + "git.gensokyo.uk/security/fortify/helper/proc" "git.gensokyo.uk/security/fortify/helper/seccomp" "git.gensokyo.uk/security/fortify/internal" "git.gensokyo.uk/security/fortify/internal/fmsg" - "git.gensokyo.uk/security/fortify/internal/proc" - init0 "git.gensokyo.uk/security/fortify/internal/proc/priv/init" + init0 "git.gensokyo.uk/security/fortify/internal/priv/init" ) // everything beyond this point runs as unconstrained target user diff --git a/internal/proc/priv/shim/manager.go b/internal/priv/shim/manager.go index 064f5c87..106e4865 100644 --- a/internal/proc/priv/shim/manager.go +++ b/internal/priv/shim/manager.go @@ -10,9 +10,9 @@ import ( "strings" "time" + "git.gensokyo.uk/security/fortify/helper/proc" "git.gensokyo.uk/security/fortify/internal" "git.gensokyo.uk/security/fortify/internal/fmsg" - "git.gensokyo.uk/security/fortify/internal/proc" ) // used by the parent process diff --git a/internal/proc/priv/shim/payload.go b/internal/priv/shim/payload.go index e659e3fd..e659e3fd 100644 --- a/internal/proc/priv/shim/payload.go +++ b/internal/priv/shim/payload.go diff --git a/internal/proc/fd.go b/internal/proc/fd.go deleted file mode 100644 index e99abb38..00000000 --- a/internal/proc/fd.go +++ /dev/null @@ -1,45 +0,0 @@ -package proc - -import ( - "encoding/gob" - "errors" - "os" - "strconv" -) - -var ( - ErrNotSet = errors.New("environment variable not set") - ErrInvalid = errors.New("bad file descriptor") -) - -// Setup appends the read end of a pipe for payload transmission and returns its fd. -func Setup(extraFiles *[]*os.File) (int, *gob.Encoder, error) { - if r, w, err := os.Pipe(); err != nil { - return -1, nil, err - } else { - fd := 3 + len(*extraFiles) - *extraFiles = append(*extraFiles, r) - return fd, gob.NewEncoder(w), nil - } -} - -// Receive retrieves payload pipe fd from the environment, -// receives its payload and returns the Close method of the pipe. -func Receive(key string, e any) (func() error, error) { - var setup *os.File - - if s, ok := os.LookupEnv(key); !ok { - return nil, ErrNotSet - } else { - if fd, err := strconv.Atoi(s); err != nil { - return nil, err - } else { - setup = os.NewFile(uintptr(fd), "setup") - if setup == nil { - return nil, ErrInvalid - } - } - } - - return func() error { return setup.Close() }, gob.NewDecoder(setup).Decode(e) -} diff --git a/internal/proc/files.go b/internal/proc/files.go deleted file mode 100644 index 712713a2..00000000 --- a/internal/proc/files.go +++ /dev/null @@ -1,17 +0,0 @@ -package proc - -import ( - "os" - "os/exec" -) - -func ExtraFile(cmd *exec.Cmd, f *os.File) (fd uintptr) { - return ExtraFileSlice(&cmd.ExtraFiles, f) -} - -func ExtraFileSlice(extraFiles *[]*os.File, f *os.File) (fd uintptr) { - // ExtraFiles: If non-nil, entry i becomes file descriptor 3+i. - fd = uintptr(3 + len(*extraFiles)) - *extraFiles = append(*extraFiles, f) - return -} diff --git a/internal/proc/self.go b/internal/proc/self.go deleted file mode 100644 index 6dc92eb7..00000000 --- a/internal/proc/self.go +++ /dev/null @@ -1,26 +0,0 @@ -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 -} |
