diff --git a/api/client.go b/api/client.go index f1a3f64f2a..e96ac213b0 100644 --- a/api/client.go +++ b/api/client.go @@ -208,6 +208,15 @@ func (cli *DockerCli) CmdBuild(args ...string) error { } // Upload the build context v := &url.Values{} + + //Check if the given image name can be resolved + if *tag != "" { + repository, _ := utils.ParseRepositoryTag(*tag) + if _, _, err := registry.ResolveRepositoryName(repository); err != nil { + return err + } + } + v.Set("t", *tag) if *suppressOutput { @@ -1003,6 +1012,12 @@ func (cli *DockerCli) CmdImport(args ...string) error { repository, tag = utils.ParseRepositoryTag(cmd.Arg(1)) } v := url.Values{} + + //Check if the given image name can be resolved + if _, _, err := registry.ResolveRepositoryName(repository); err != nil { + return err + } + v.Set("repo", repository) v.Set("tag", tag) v.Set("fromSrc", src) @@ -1453,6 +1468,11 @@ func (cli *DockerCli) CmdCommit(args ...string) error { return nil } + //Check if the given image name can be resolved + if _, _, err := registry.ResolveRepositoryName(repository); err != nil { + return err + } + v := url.Values{} v.Set("container", name) v.Set("repo", repository) @@ -1741,6 +1761,11 @@ func (cli *DockerCli) CmdTag(args ...string) error { } v := url.Values{} + + //Check if the given image name can be resolved + if _, _, err := registry.ResolveRepositoryName(repository); err != nil { + return err + } v.Set("repo", repository) v.Set("tag", tag) diff --git a/registry/registry_test.go b/registry/registry_test.go index ebfb99b4c3..c072da41c5 100644 --- a/registry/registry_test.go +++ b/registry/registry_test.go @@ -206,4 +206,8 @@ func TestValidRepositoryName(t *testing.T) { t.Log("Repository name should be invalid") t.Fail() } + if err := validateRepositoryName("docker///docker"); err == nil { + t.Log("Repository name should be invalid") + t.Fail() + } }