diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-02-13 23:15:34 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-02-13 23:34:15 +0900 |
| commit | fe7d208cf76fa6f24bb9d12ba29b5ed61d837ce3 (patch) | |
| tree | cac02af50a13b2078739a8f5a74d219f3b60833d /ldd | |
| parent | 60c287375048b21eab2bd82f1e7d43e36dcfb3a2 (diff) | |
helper: use generic extra files interface
This replaces the pipes object and integrates context into helper process lifecycle.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'ldd')
| -rw-r--r-- | ldd/exec.go | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/ldd/exec.go b/ldd/exec.go index 47e20a82..d605b457 100644 --- a/ldd/exec.go +++ b/ldd/exec.go @@ -1,20 +1,19 @@ package ldd import ( - "fmt" + "context" "os" - "os/exec" "strings" + "time" "git.gensokyo.uk/security/fortify/helper" "git.gensokyo.uk/security/fortify/helper/bwrap" ) -func Exec(p string) ([]*Entry, error) { - var ( - h helper.Helper - cmd *exec.Cmd - ) +const lddTimeout = 2 * time.Second + +func Exec(ctx context.Context, p string) ([]*Entry, error) { + var h helper.Helper if b, err := helper.NewBwrap( (&bwrap.Config{ @@ -29,17 +28,20 @@ func Exec(p string) ([]*Entry, error) { ); err != nil { return nil, err } else { - cmd = b.Unwrap() h = b } - cmd.Stdout, cmd.Stderr = new(strings.Builder), os.Stderr - if err := h.Start(); err != nil { + stdout := new(strings.Builder) + h.Stdout(stdout).Stderr(os.Stderr) + + c, cancel := context.WithTimeout(ctx, lddTimeout) + defer cancel() + if err := h.Start(c, false); err != nil { return nil, err } if err := h.Wait(); err != nil { return nil, err } - return Parse(cmd.Stdout.(fmt.Stringer)) + return Parse(stdout) } |
