From fe7d208cf76fa6f24bb9d12ba29b5ed61d837ce3 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Thu, 13 Feb 2025 23:15:34 +0900 Subject: helper: use generic extra files interface This replaces the pipes object and integrates context into helper process lifecycle. Signed-off-by: Ophestra --- ldd/exec.go | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'ldd') 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) } -- cgit v1.3.1