Explorar el Código

Merge pull request #3881 from crosbymichael/no-all-number

Do not generate all numberic truncated ids
Guillaume J. Charmes hace 11 años
padre
commit
c9f6e446ee
Se han modificado 1 ficheros con 13 adiciones y 5 borrados
  1. 13 5
      image.go

+ 13 - 5
image.go

@@ -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