summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Rothberg <rothberg@redhat.com>2020-01-15 11:41:38 +0100
committerValentin Rothberg <rothberg@redhat.com>2020-01-15 11:41:38 +0100
commit3c7b7761ceafc24f9fa42e5f08178d8c644d9017 (patch)
treef98239c83b90587d4de7fb40889107f03a48c1ac
parenta1ff93bdfedc30d707a1230d5d1cb8d987a7360f (diff)
downloadpodman-3c7b7761ceafc24f9fa42e5f08178d8c644d9017.tar.gz
podman-3c7b7761ceafc24f9fa42e5f08178d8c644d9017.tar.bz2
podman-3c7b7761ceafc24f9fa42e5f08178d8c644d9017.zip
v2: stats: do not ignore errors
We must check all errors and handle them properly. Otherwise, we can run into nil dereferences ultimately killing the service. Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
-rw-r--r--pkg/api/handlers/generic/containers_stats.go37
1 files changed, 31 insertions, 6 deletions
diff --git a/pkg/api/handlers/generic/containers_stats.go b/pkg/api/handlers/generic/containers_stats.go
index 538fc6f21..eb9cfca4a 100644
--- a/pkg/api/handlers/generic/containers_stats.go
+++ b/pkg/api/handlers/generic/containers_stats.go
@@ -81,19 +81,44 @@ func StatsContainer(w http.ResponseWriter, r *http.Request) {
time.Sleep(DefaultStatsPeriod)
}
- cgroupPath, _ := ctnr.CGroupPath()
- cgroup, _ := cgroups.Load(cgroupPath)
+ cgroupPath, err := ctnr.CGroupPath()
+ if err != nil {
+ utils.InternalServerError(w, err)
+ return
+ }
+
+ cgroup, err := cgroups.Load(cgroupPath)
+ if err != nil {
+ utils.InternalServerError(w, err)
+ return
+ }
for ok := true; ok; ok = query.Stream {
- state, _ := ctnr.State()
+ state, err := ctnr.State()
+ if err != nil {
+ utils.InternalServerError(w, err)
+ return
+ }
if state != define.ContainerStateRunning {
time.Sleep(10 * time.Second)
continue
}
- stats, _ := ctnr.GetContainerStats(stats)
- cgroupStat, _ := cgroup.Stat()
- inspect, _ := ctnr.Inspect(false)
+ stats, err := ctnr.GetContainerStats(stats)
+ if err != nil {
+ utils.InternalServerError(w, err)
+ return
+ }
+ cgroupStat, err := cgroup.Stat()
+ if err != nil {
+ utils.InternalServerError(w, err)
+ return
+ }
+ inspect, err := ctnr.Inspect(false)
+ if err != nil {
+ utils.InternalServerError(w, err)
+ return
+ }
net := make(map[string]docker.NetworkStats)
net[inspect.NetworkSettings.EndpointID] = docker.NetworkStats{