1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #13155 from coolljt0725/fix_validate_tag_name

Fix validate tag name. Fix #13149
This commit is contained in:
David Calavera 2015-05-13 12:03:22 -07:00
commit 3da0013ac4
3 changed files with 33 additions and 0 deletions

View file

@ -116,6 +116,30 @@ func (s *DockerSuite) TestTagExistedNameWithForce(c *check.C) {
}
}
func (s *DockerSuite) TestTagWithSuffixHyphen(c *check.C) {
if err := pullImageIfNotExist("busybox:latest"); err != nil {
c.Fatal("couldn't find the busybox:latest image locally and failed to pull it")
}
// test repository name begin with '-'
tagCmd := exec.Command(dockerBinary, "tag", "busybox:latest", "-busybox:test")
out, _, err := runCommandWithOutput(tagCmd)
if err == nil || !strings.Contains(out, "Invalid repository name (-busybox). Cannot begin or end with a hyphen") {
c.Fatal("tag a name begin with '-' should failed")
}
// test namespace name begin with '-'
tagCmd = exec.Command(dockerBinary, "tag", "busybox:latest", "-test/busybox:test")
out, _, err = runCommandWithOutput(tagCmd)
if err == nil || !strings.Contains(out, "Invalid namespace name (-test). Cannot begin or end with a hyphen") {
c.Fatal("tag a name begin with '-' should failed")
}
// test index name begin wiht '-'
tagCmd = exec.Command(dockerBinary, "tag", "busybox:latest", "-index:5000/busybox:test")
out, _, err = runCommandWithOutput(tagCmd)
if err == nil || !strings.Contains(out, "Invalid index name (-index:5000). Cannot begin or end with a hyphen") {
c.Fatal("tag a name begin with '-' should failed")
}
}
// ensure tagging using official names works
// ensure all tags result in the same name
func (s *DockerSuite) TestTagOfficialNames(c *check.C) {

View file

@ -198,6 +198,9 @@ func ValidateIndexName(val string) (string, error) {
if val == "index."+IndexServerName() {
val = IndexServerName()
}
if strings.HasPrefix(val, "-") || strings.HasSuffix(val, "-") {
return "", fmt.Errorf("Invalid index name (%s). Cannot begin or end with a hyphen.", val)
}
// *TODO: Check if valid hostname[:port]/ip[:port]?
return val, nil
}
@ -235,6 +238,9 @@ func validateRemoteName(remoteName string) error {
if !validRepo.MatchString(name) {
return fmt.Errorf("Invalid repository name (%s), only [a-z0-9-_.] are allowed", name)
}
if strings.HasPrefix(name, "-") || strings.HasSuffix(name, "-") {
return fmt.Errorf("Invalid repository name (%s). Cannot begin or end with a hyphen.", name)
}
return nil
}

View file

@ -299,6 +299,9 @@ func TestValidateRepositoryName(t *testing.T) {
invalidRepoNames := []string{
"https://github.com/docker/docker",
"docker/Docker",
"-docker",
"-docker/docker",
"-docker.io/docker/docker",
"docker///docker",
"docker.io/docker/Docker",
"docker.io/docker///docker",