diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-12-06 23:43:25 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-06 23:43:25 +0000 |
commit | 49f589d7c36b6d52105a94493baf1664a3ada79c (patch) | |
tree | a8007cc755dc588312474bf27a1e996381731a9b /libpod/container_top_linux.go | |
parent | 1aeb61cf5cfb0155ebcff3b449c5ea4bf8f15dc1 (diff) | |
parent | 014bbdb40a8a91ea59b8e4953c843ad4c4a69156 (diff) | |
download | podman-49f589d7c36b6d52105a94493baf1664a3ada79c.tar.gz podman-49f589d7c36b6d52105a94493baf1664a3ada79c.tar.bz2 podman-49f589d7c36b6d52105a94493baf1664a3ada79c.zip |
Merge pull request #12525 from mheon/bump_343
Backports for and bump to v3.4.3
Diffstat (limited to 'libpod/container_top_linux.go')
-rw-r--r-- | libpod/container_top_linux.go | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/libpod/container_top_linux.go b/libpod/container_top_linux.go index 0d4cba85e..d4f4ddfc1 100644 --- a/libpod/container_top_linux.go +++ b/libpod/container_top_linux.go @@ -4,6 +4,7 @@ package libpod import ( "bufio" + "fmt" "os" "strconv" "strings" @@ -11,6 +12,7 @@ import ( "github.com/containers/podman/v3/libpod/define" "github.com/containers/podman/v3/pkg/rootless" "github.com/containers/psgo" + "github.com/google/shlex" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -51,7 +53,21 @@ func (c *Container) Top(descriptors []string) ([]string, error) { return nil, psgoErr } - output, err = c.execPS(descriptors) + // Note that the descriptors to ps(1) must be shlexed (see #12452). + psDescriptors := []string{} + for _, d := range descriptors { + shSplit, err := shlex.Split(d) + if err != nil { + return nil, fmt.Errorf("parsing ps args: %v", err) + } + for _, s := range shSplit { + if s != "" { + psDescriptors = append(psDescriptors, s) + } + } + } + + output, err = c.execPS(psDescriptors) if err != nil { return nil, errors.Wrapf(err, "error executing ps(1) in the container") } |