From 24a4273cf96c34e90c5406146682e710d50a1121 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Fri, 28 Jul 2017 13:56:33 +0200 Subject: [PATCH] libcontainer: handle error cases Handle err return value of fmt.Scanf, os.Pipe and unix.ParseUnixRights. Found with honnef.co/go/tools/cmd/staticcheck Signed-off-by: Tobias Klauser --- libcontainer/container_linux.go | 6 ++++++ libcontainer/integration/exec_test.go | 6 ++++++ libcontainer/integration/execin_test.go | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/libcontainer/container_linux.go b/libcontainer/container_linux.go index 7a319ef8c..a21455da8 100644 --- a/libcontainer/container_linux.go +++ b/libcontainer/container_linux.go @@ -596,6 +596,9 @@ func (c *linuxContainer) checkCriuVersion(minVersion string) error { _, err := fmt.Sscanf(minVersion, "%d.%d.%d\n", &x, &y, &z) // 1.5.2 if err != nil { _, err = fmt.Sscanf(minVersion, "Version: %d.%d\n", &x, &y) // 1.6 + if err != nil { + return fmt.Errorf("Unable to parse the CRIU min version: %s", minVersion) + } } versionReq = x*10000 + y*100 + z @@ -1295,6 +1298,9 @@ func (c *linuxContainer) criuNotifications(resp *criurpc.CriuResp, process *Proc return err } fds, err := unix.ParseUnixRights(&scm[0]) + if err != nil { + return err + } master := os.NewFile(uintptr(fds[0]), "orphan-pts-master") defer master.Close() diff --git a/libcontainer/integration/exec_test.go b/libcontainer/integration/exec_test.go index 49db94ac7..4fbd760fd 100644 --- a/libcontainer/integration/exec_test.go +++ b/libcontainer/integration/exec_test.go @@ -807,7 +807,13 @@ func TestPassExtraFiles(t *testing.T) { var stdout bytes.Buffer pipeout1, pipein1, err := os.Pipe() + if err != nil { + t.Fatal(err) + } pipeout2, pipein2, err := os.Pipe() + if err != nil { + t.Fatal(err) + } process := libcontainer.Process{ Cwd: "/", Args: []string{"sh", "-c", "cd /proc/$$/fd; echo -n *; echo -n 1 >3; echo -n 2 >4"}, diff --git a/libcontainer/integration/execin_test.go b/libcontainer/integration/execin_test.go index 0f662bd3f..d8cb594e0 100644 --- a/libcontainer/integration/execin_test.go +++ b/libcontainer/integration/execin_test.go @@ -431,7 +431,13 @@ func TestExecinPassExtraFiles(t *testing.T) { var stdout bytes.Buffer pipeout1, pipein1, err := os.Pipe() + if err != nil { + t.Fatal(err) + } pipeout2, pipein2, err := os.Pipe() + if err != nil { + t.Fatal(err) + } inprocess := &libcontainer.Process{ Cwd: "/", Args: []string{"sh", "-c", "cd /proc/$$/fd; echo -n *; echo -n 1 >3; echo -n 2 >4"},