summaryrefslogtreecommitdiff
path: root/libpod/container_path_resolution.go
diff options
context:
space:
mode:
authorSlava Bacherikov <slava@bacher09.org>2021-05-06 00:43:02 +0300
committerSlava Bacherikov <slava@bacher09.org>2021-05-06 19:24:14 +0300
commitd6fd5289008c595c0aa49e9f9d06632795adca82 (patch)
tree66f53767d47f15d4d6d9589140362263491c5dbb /libpod/container_path_resolution.go
parented6f399770946bb2e88f8b94e1d2f279208648d4 (diff)
downloadpodman-d6fd5289008c595c0aa49e9f9d06632795adca82.tar.gz
podman-d6fd5289008c595c0aa49e9f9d06632795adca82.tar.bz2
podman-d6fd5289008c595c0aa49e9f9d06632795adca82.zip
Fix infinite loop in isPathOnVolume
filepath.Dir in some cases returns `.` symbol and calling this function again returns same result. In such cases this function never returns and causes some operations to stuck forever. Closes #10216 Signed-off-by: Slava Bacherikov <slava@bacher09.org>
Diffstat (limited to 'libpod/container_path_resolution.go')
-rw-r--r--libpod/container_path_resolution.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/libpod/container_path_resolution.go b/libpod/container_path_resolution.go
index d798963b1..ec7306ca1 100644
--- a/libpod/container_path_resolution.go
+++ b/libpod/container_path_resolution.go
@@ -128,7 +128,7 @@ func isPathOnVolume(c *Container, containerPath string) bool {
if cleanedContainerPath == filepath.Clean(vol.Dest) {
return true
}
- for dest := vol.Dest; dest != "/"; dest = filepath.Dir(dest) {
+ for dest := vol.Dest; dest != "/" && dest != "."; dest = filepath.Dir(dest) {
if cleanedContainerPath == dest {
return true
}