Do not generate all numberic truncated ids

Fixes #3869
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
This commit is contained in:
Michael Crosby 2014-01-31 17:22:15 -08:00
parent 23815414ea
commit 9b7054fd0b
1 changed files with 13 additions and 5 deletions

View File

@ -203,12 +203,20 @@ func ValidateID(id string) error {
}
func GenerateID() string {
id := make([]byte, 32)
_, err := io.ReadFull(rand.Reader, id)
if err != nil {
panic(err) // This shouldn't happen
for {
id := make([]byte, 32)
if _, err := io.ReadFull(rand.Reader, id); err != nil {
panic(err) // This shouldn't happen
}
value := hex.EncodeToString(id)
// if we try to parse the truncated for as an int and we don't have
// an error then the value is all numberic and causes issues when
// used as a hostname. ref #3869
if _, err := strconv.Atoi(utils.TruncateID(value)); err == nil {
continue
}
return value
}
return hex.EncodeToString(id)
}
// Image includes convenience proxy functions to its graph