Skip to content

Commit

Permalink
Merge pull request #5222 from mheon/fix_5219
Browse files Browse the repository at this point in the history
Use cleaned destination path for indexing image volumes
  • Loading branch information
openshift-merge-robot authored Feb 20, 2020
2 parents a8896d5 + 40fa7e9 commit bfeaabb
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
5 changes: 3 additions & 2 deletions pkg/spec/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -739,6 +739,7 @@ func (config *CreateConfig) getImageVolumes() (map[string]spec.Mount, map[string

for vol := range config.BuiltinImgVolumes {
cleanDest := filepath.Clean(vol)
logrus.Debugf("Adding image volume at %s", cleanDest)
if config.ImageVolumeType == "tmpfs" {
// Tmpfs image volumes are handled as mounts
mount := spec.Mount{
Expand All @@ -747,13 +748,13 @@ func (config *CreateConfig) getImageVolumes() (map[string]spec.Mount, map[string
Type: TypeTmpfs,
Options: []string{"rprivate", "rw", "nodev", "exec"},
}
mounts[vol] = mount
mounts[cleanDest] = mount
} else {
// Anonymous volumes have no name.
namedVolume := new(libpod.ContainerNamedVolume)
namedVolume.Options = []string{"rprivate", "rw", "nodev", "exec"}
namedVolume.Dest = cleanDest
volumes[vol] = namedVolume
volumes[cleanDest] = namedVolume
}
}

Expand Down
20 changes: 20 additions & 0 deletions test/e2e/run_volume_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ import (
"github.com/onsi/gomega/gexec"
)

var VolumeTrailingSlashDockerfile = `
FROM alpine:latest
VOLUME /test/`

var _ = Describe("Podman run with volumes", func() {
var (
tempdir string
Expand Down Expand Up @@ -421,4 +425,20 @@ var _ = Describe("Podman run with volumes", func() {
Expect(len(outputArr)).To(Equal(1))
Expect(strings.Contains(outputArr[0], fileName)).To(BeTrue())
})

It("Podman mount over image volume with trailing /", func() {
image := "podman-volume-test:trailing"
podmanTest.BuildImage(VolumeTrailingSlashDockerfile, image, "false")

ctrName := "testCtr"
create := podmanTest.Podman([]string{"create", "-v", "/tmp:/test", "--name", ctrName, image, "ls"})
create.WaitWithDefaultTimeout()
Expect(create.ExitCode()).To(Equal(0))

data := podmanTest.InspectContainer(ctrName)
Expect(len(data)).To(Equal(1))
Expect(len(data[0].Mounts)).To(Equal(1))
Expect(data[0].Mounts[0].Source).To(Equal("/tmp"))
Expect(data[0].Mounts[0].Destination).To(Equal("/test"))
})
})

0 comments on commit bfeaabb

Please sign in to comment.