From 52e4f24c5868b91106479af4393f1ceed8f82beb Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Wed, 4 Oct 2023 13:12:49 -0700 Subject: [PATCH] portlist: populate Pid field on Linux The Port.Pid was always more of an implementation detail on some platforms and isn't necessary on Linux so it was never populated. (Nothing outside the portlist package ever used it) But might as well populate it for consistency since we have it in memory and its absence confused people. Updates #cleanup Change-Id: I869768a75c9fedeff242a5452206e2b2947a17cb Signed-off-by: Brad Fitzpatrick --- portlist/portlist.go | 4 ++-- portlist/portlist_linux.go | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/portlist/portlist.go b/portlist/portlist.go index 81c1664a7..9f7af40d0 100644 --- a/portlist/portlist.go +++ b/portlist/portlist.go @@ -17,8 +17,8 @@ type Port struct { Proto string // "tcp" or "udp" Port uint16 // port number - Process string // optional process name, if found - Pid int // process id, if known + Process string // optional process name, if found (requires suitable permissions) + Pid int // process ID, if known (requires suitable permissions) } // List is a list of Ports. diff --git a/portlist/portlist_linux.go b/portlist/portlist_linux.go index eb1e53f9e..68b8ed7ba 100644 --- a/portlist/portlist_linux.go +++ b/portlist/portlist_linux.go @@ -322,6 +322,8 @@ func (li *linuxImpl) findProcessNames(need map[string]*portMeta) error { pe.pid = int(p) } pe.port.Process = argvSubject(argv...) + pid64, _ := mem.ParseInt(pid, 10, 0) + pe.port.Pid = int(pid64) pe.needsProcName = false delete(need, string(targetBuf[:n])) if len(need) == 0 {