소스 검색

Merge pull request #11538 from duglin/EmptyVolume

Check volume path to make sure its not the empty string
Arnaud Porterie 10 년 전
부모
커밋
ded0ada9b4
2개의 변경된 파일20개의 추가작업 그리고 0개의 파일을 삭제
  1. 4 0
      builder/dispatchers.go
  2. 16 0
      integration-cli/docker_cli_build_test.go

+ 4 - 0
builder/dispatchers.go

@@ -427,6 +427,10 @@ func volume(b *Builder, args []string, attributes map[string]bool, original stri
 		b.Config.Volumes = map[string]struct{}{}
 		b.Config.Volumes = map[string]struct{}{}
 	}
 	}
 	for _, v := range args {
 	for _, v := range args {
+		v = strings.TrimSpace(v)
+		if v == "" {
+			return fmt.Errorf("Volume specified can not be an empty string")
+		}
 		b.Config.Volumes[v] = struct{}{}
 		b.Config.Volumes[v] = struct{}{}
 	}
 	}
 	if err := b.commit("", b.Config.Cmd, fmt.Sprintf("VOLUME %v", args)); err != nil {
 	if err := b.commit("", b.Config.Cmd, fmt.Sprintf("VOLUME %v", args)); err != nil {

+ 16 - 0
integration-cli/docker_cli_build_test.go

@@ -5540,3 +5540,19 @@ func TestBuildResourceConstraintsAreUsed(t *testing.T) {
 
 
 	logDone("build - resource constraints applied")
 	logDone("build - resource constraints applied")
 }
 }
+
+func TestBuildEmptyStringVolume(t *testing.T) {
+	name := "testbuildemptystringvolume"
+	defer deleteImages(name)
+
+	_, err := buildImage(name, `
+  FROM busybox
+  ENV foo=""
+  VOLUME $foo
+  `, false)
+	if err == nil {
+		t.Fatal("Should have failed to build")
+	}
+
+	logDone("build - empty string volume")
+}