aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorValentin Rothberg <rothberg@redhat.com>2021-06-24 13:53:36 +0200
committerValentin Rothberg <rothberg@redhat.com>2021-06-24 13:53:36 +0200
commitb1082696ebb3970ca0a67790fa9bb9955eff5fc2 (patch)
treeb722db1891c051f7260192677effb9fbc7fc9f7c /cmd
parentda33fc45b6628c1ac1a16e49790be2b4fbf502a5 (diff)
downloadpodman-b1082696ebb3970ca0a67790fa9bb9955eff5fc2.tar.gz
podman-b1082696ebb3970ca0a67790fa9bb9955eff5fc2.tar.bz2
podman-b1082696ebb3970ca0a67790fa9bb9955eff5fc2.zip
cp: do not allow dir->file copying
Fix a bug in `podman-cp` to forbid copying directories to files. Previously, the directory was copied to the parent directory of the file which is wrong. Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/podman/containers/cp.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/cmd/podman/containers/cp.go b/cmd/podman/containers/cp.go
index 2c7d72b20..0ad258824 100644
--- a/cmd/podman/containers/cp.go
+++ b/cmd/podman/containers/cp.go
@@ -177,6 +177,10 @@ func copyFromContainer(container string, containerPath string, hostPath string)
containerTarget = filepath.Dir(containerTarget)
}
+ if !isStdout && containerInfo.IsDir && !hostInfo.IsDir {
+ return errors.New("destination must be a directory when copying a directory")
+ }
+
reader, writer := io.Pipe()
hostCopy := func() error {
defer reader.Close()
@@ -334,6 +338,10 @@ func copyToContainer(container string, containerPath string, hostPath string) er
stdinFile = tmpFile.Name()
}
+ if hostInfo.IsDir && !containerInfo.IsDir {
+ return errors.New("destination must be a directory when copying a directory")
+ }
+
reader, writer := io.Pipe()
hostCopy := func() error {
defer writer.Close()