diff --git a/libcontainer/cgroups/file.go b/libcontainer/cgroups/file.go index 9d7f6d2e9..c1b8f5c15 100644 --- a/libcontainer/cgroups/file.go +++ b/libcontainer/cgroups/file.go @@ -5,12 +5,11 @@ import ( "errors" "fmt" "os" - "path" + "path/filepath" "strconv" "strings" "sync" - "github.com/opencontainers/runc/libcontainer/utils" "github.com/sirupsen/logrus" "golang.org/x/sys/unix" ) @@ -147,7 +146,10 @@ func openFile(dir, file string, flags int) (*os.File, error) { flags |= os.O_TRUNC | os.O_CREATE mode = 0o600 } - path := path.Join(dir, utils.CleanPath(file)) + // NOTE it is important to use filepath.Clean("/"+file) here + // (see https://github.com/opencontainers/runc/issues/4103)! + path := filepath.Join(dir, filepath.Clean("/"+file)) + if prepareOpenat2() != nil { return openFallback(path, flags, mode) }