diff --git a/src/runtime/virtcontainers/mount.go b/src/runtime/virtcontainers/mount.go index 243c13f330..6c2e204208 100644 --- a/src/runtime/virtcontainers/mount.go +++ b/src/runtime/virtcontainers/mount.go @@ -44,6 +44,7 @@ func mountLogger() *logrus.Entry { } func isSystemMount(m string) bool { + m = filepath.Clean(m) for _, p := range systemMountPrefixes { if m == p || strings.HasPrefix(m, p+"/") { return true @@ -54,6 +55,7 @@ func isSystemMount(m string) bool { } func isHostDevice(m string) bool { + m = filepath.Clean(m) if m == "/dev" { return true } diff --git a/src/runtime/virtcontainers/mount_linux_test.go b/src/runtime/virtcontainers/mount_linux_test.go index a34f7c28f3..e5019b401b 100644 --- a/src/runtime/virtcontainers/mount_linux_test.go +++ b/src/runtime/virtcontainers/mount_linux_test.go @@ -249,6 +249,9 @@ func TestIsHostDevice(t *testing.T) { {"/dev/zero", true}, {"/dev/block", true}, {"/mnt/dev/block", false}, + {"/../dev", true}, + {"/../dev/block", true}, + {"/../mnt/dev/block", false}, } for _, test := range tests { diff --git a/src/runtime/virtcontainers/mount_test.go b/src/runtime/virtcontainers/mount_test.go index 6d91d22a7b..c21d00a195 100644 --- a/src/runtime/virtcontainers/mount_test.go +++ b/src/runtime/virtcontainers/mount_test.go @@ -41,6 +41,10 @@ func TestIsSystemMount(t *testing.T) { {"/home", false}, {"/dev/block/", false}, {"/mnt/dev/foo", false}, + {"/../sys", true}, + {"/../sys/", true}, + {"/../sys/fs/cgroup", true}, + {"/../sysfoo", false}, } for _, test := range tests {