From bc54db54d2b33e5ed29667be69d0c07eed9bb007 Mon Sep 17 00:00:00 2001
From: Ophestra <cat@gensokyo.uk>
Date: Mon, 17 Mar 2025 00:08:00 +0900
Subject: [PATCH] ldd: always copy stderr

Dropping the buffer on success is unhelpful and could hide some useful information.

Signed-off-by: Ophestra <cat@gensokyo.uk>
---
 ldd/exec.go | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/ldd/exec.go b/ldd/exec.go
index 4854c85..55d16cf 100644
--- a/ldd/exec.go
+++ b/ldd/exec.go
@@ -3,6 +3,7 @@ package ldd
 import (
 	"bytes"
 	"context"
+	"io"
 	"os"
 	"os/exec"
 	"time"
@@ -35,7 +36,9 @@ func ExecFilter(ctx context.Context,
 
 	if err := container.Start(); err != nil {
 		return nil, err
-	} else if err = container.Serve(); err != nil {
+	}
+	defer func() { _, _ = io.Copy(os.Stderr, stderr) }()
+	if err := container.Serve(); err != nil {
 		return nil, err
 	}
 	if err := container.Wait(); err != nil {
@@ -44,8 +47,6 @@ func ExecFilter(ctx context.Context,
 			bytes.Contains(m, msgStaticGlibc) {
 			return nil, nil
 		}
-
-		_, _ = os.Stderr.Write(m)
 		return nil, err
 	}