Browse Source

Fix a panic where RUN [] would be supplied.

Docker-DCO-1.1-Signed-off-by: Erik Hollensbe <github@hollensbe.org> (github: erikh)
Erik Hollensbe 10 years ago
parent
commit
39343b8618
2 changed files with 26 additions and 3 deletions
  1. 7 3
      builder/internals.go
  2. 19 0
      integration-cli/docker_cli_build_test.go

+ 7 - 3
builder/internals.go

@@ -532,9 +532,13 @@ func (b *Builder) create() (*daemon.Container, error) {
 	b.TmpContainers[c.ID] = struct{}{}
 	fmt.Fprintf(b.OutStream, " ---> Running in %s\n", utils.TruncateID(c.ID))
 
-	// override the entry point that may have been picked up from the base image
-	c.Path = config.Cmd[0]
-	c.Args = config.Cmd[1:]
+	if config.Cmd != nil {
+		// override the entry point that may have been picked up from the base image
+		c.Path = config.Cmd[0]
+		c.Args = config.Cmd[1:]
+	} else {
+		config.Cmd = []string{}
+	}
 
 	return c, nil
 }

+ 19 - 0
integration-cli/docker_cli_build_test.go

@@ -22,6 +22,25 @@ import (
 	"github.com/docker/docker/pkg/archive"
 )
 
+func TestBuildJSONEmptyRun(t *testing.T) {
+	name := "testbuildjsonemptyrun"
+	defer deleteImages(name)
+
+	_, err := buildImage(
+		name,
+		`
+    FROM busybox
+    RUN []
+    `,
+		true)
+
+	if err != nil {
+		t.Fatal("error when dealing with a RUN statement with empty JSON array")
+	}
+
+	logDone("build - RUN with an empty array should not panic")
+}
+
 func TestBuildEmptyWhitespace(t *testing.T) {
 	name := "testbuildemptywhitespace"
 	defer deleteImages(name)