summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew G. Morgan <morgan@kernel.org>2021-09-01 20:22:45 -0700
committerAndrew G. Morgan <morgan@kernel.org>2021-09-01 20:22:45 -0700
commit142ad758ffaaec1b4c4e5e7c61287a943f21ff7b (patch)
tree345879a2acb9733db0ef89194a2fd0b67bcb000e
parent0cba26fca376c34fa715b31b915ea0adee5d77ce (diff)
downloadlibcap2-142ad758ffaaec1b4c4e5e7c61287a943f21ff7b.tar.gz
Don't display duplicate subtrees with captree.
This addresses issue (1) of: https://bugzilla.kernel.org/show_bug.cgi?id=214269 Signed-off-by: Andrew G. Morgan <morgan@kernel.org>
-rw-r--r--goapps/captree/captree.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/goapps/captree/captree.go b/goapps/captree/captree.go
index 4c7a586..f6bdaa4 100644
--- a/goapps/captree/captree.go
+++ b/goapps/captree/captree.go
@@ -88,6 +88,7 @@ var (
type task struct {
mu sync.Mutex
+ viewed bool
pid string
cmd string
cap *cap.Set
@@ -183,6 +184,13 @@ func rDump(pids map[string]*task, pid, stub, lstub, estub string, depth int) {
fmt.Println("[PID:", pid, "not found]")
return
}
+ if info.viewed {
+ // This process (tree) has already been viewed so skip
+ // repeating it.
+ return
+ }
+ info.viewed = true
+
c := ""
set := info.cap
if set != nil {