Explorar o código

Merge pull request #4929 from crosbymichael/volume-abs-path

Force abs paths for host volumes
Guillaume J. Charmes %!s(int64=11) %!d(string=hai) anos
pai
achega
f6f059d99a
Modificáronse 2 ficheiros con 19 adicións e 0 borrados
  1. 12 0
      integration-cli/docker_cli_run_test.go
  2. 7 0
      runtime/volumes.go

+ 12 - 0
integration-cli/docker_cli_run_test.go

@@ -271,3 +271,15 @@ func TestDockerRunWithVolumesAsFiles(t *testing.T) {
 
 	logDone("run - regression test for #4741 - volumes from as files")
 }
+
+// Regression test for #4830
+func TestDockerRunWithRelativePath(t *testing.T) {
+	runCmd := exec.Command(dockerBinary, "run", "-v", "tmp:/other-tmp", "busybox", "true")
+	if _, _, _, err := runCommandWithStdoutStderr(runCmd); err == nil {
+		t.Fatalf("relative path should result in an error")
+	}
+
+	deleteAllContainers()
+
+	logDone("run - volume with relative path")
+}

+ 7 - 0
runtime/volumes.go

@@ -172,6 +172,13 @@ func createVolumes(container *Container) error {
 		if bindMap, exists := binds[volPath]; exists {
 			isBindMount = true
 			srcPath = bindMap.SrcPath
+			srcAbs, err := filepath.Abs(srcPath)
+			if err != nil {
+				return err
+			}
+			if srcPath != srcAbs {
+				return fmt.Errorf("%s should be an absolute path", srcPath)
+			}
 			if strings.ToLower(bindMap.Mode) == "rw" {
 				srcRW = true
 			}