From fe1947308d8f3fc3a7ef8996ba1da7b82de4e053 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Mon, 10 Jul 2017 09:51:08 -0700 Subject: [PATCH] Ignore unified paths with no subsystem Signed-off-by: Michael Crosby --- paths_test.go | 24 ++++++++++++++++++++++++ utils.go | 4 +++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/paths_test.go b/paths_test.go index d782dde8..31bb10bc 100644 --- a/paths_test.go +++ b/paths_test.go @@ -60,3 +60,27 @@ func TestRootPath(t *testing.T) { t.Errorf("expected / but received %q", p) } } + +func TestEmptySubsystem(t *testing.T) { + const data = `10:devices:/user.slice + 9:net_cls,net_prio:/ + 8:blkio:/ + 7:freezer:/ + 6:perf_event:/ + 5:cpuset:/ + 4:memory:/ + 3:pids:/user.slice/user-1000.slice/user@1000.service + 2:cpu,cpuacct:/ + 1:name=systemd:/user.slice/user-1000.slice/user@1000.service/gnome-terminal-server.service + 0::/user.slice/user-1000.slice/user@1000.service/gnome-terminal-server.service` + r := strings.NewReader(data) + paths, err := parseCgroupFromReader(r) + if err != nil { + t.Fatal(err) + } + for subsystem, path := range paths { + if subsystem == "" { + t.Fatalf("empty subsystem for %q", path) + } + } +} diff --git a/utils.go b/utils.go index 823568b9..c3b8be8e 100644 --- a/utils.go +++ b/utils.go @@ -207,7 +207,9 @@ func parseCgroupFromReader(r io.Reader) (map[string]string, error) { return nil, fmt.Errorf("invalid cgroup entry: must contain at least two colons: %v", text) } for _, subs := range strings.Split(parts[1], ",") { - cgroups[subs] = parts[2] + if subs != "" { + cgroups[subs] = parts[2] + } } } return cgroups, nil