From e38e977a0410b754b6f318ff973dc15e6d756023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Djibril=20Kon=C3=A9?= Date: Tue, 18 Mar 2014 21:18:36 +0100 Subject: [PATCH 1/2] Harmonize / across all name-related commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Docker-DCO-1.1-Signed-off-by: Djibril Koné (github: enokd) Harmonize / across all name-related commands Docker-DCO-1.1-Signed-off-by: Djibril Koné (github: enokd) Harmonize / across all name-related commands:Return an error when repeated / Docker-DCO-1.1-Signed-off-by: Djibril Koné (github: enokd) --- api/client.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/api/client.go b/api/client.go index 10dd9406dc..07a3d25e5c 100644 --- a/api/client.go +++ b/api/client.go @@ -1452,6 +1452,11 @@ func (cli *DockerCli) CmdCommit(args ...string) error { return nil } + re := regexp.MustCompile("/{2}") + if re.MatchString(repository) { + return fmt.Errorf("Error: Bad image name. Please rename your image in the format /") + } + v := url.Values{} v.Set("container", name) v.Set("repo", repository) From 43c3ee3ba154e2480191ed3743391810f23f29af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Djibril=20Kon=C3=A9?= Date: Fri, 21 Mar 2014 00:40:58 +0100 Subject: [PATCH 2/2] Harmonize / across all name-related commands/Validate images names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Docker-DCO-1.1-Signed-off-by: Djibril Koné (github: enokd) --- api/client.go | 26 +++++++++++++++++++++++--- registry/registry_test.go | 4 ++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/api/client.go b/api/client.go index 07a3d25e5c..aed1ccabc6 100644 --- a/api/client.go +++ b/api/client.go @@ -207,6 +207,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 { @@ -1002,6 +1011,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) @@ -1452,9 +1467,9 @@ func (cli *DockerCli) CmdCommit(args ...string) error { return nil } - re := regexp.MustCompile("/{2}") - if re.MatchString(repository) { - return fmt.Errorf("Error: Bad image name. Please rename your image in the format /") + //Check if the given image name can be resolved + if _, _, err := registry.ResolveRepositoryName(repository); err != nil { + return err } v := url.Values{} @@ -1745,6 +1760,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() + } }