🐞 Don't accidentally produce hex-notation hostname

I have a test helper which produces a random 8-character string
consisting of mixed-case alphabetic characters; however, there's a small
chance (6/26^8 == 0.0008%) that it would produce a valid 8-character
hexadecimal string, which could be mistakenly recognized as an IP
address, which _might_ break a test.

Out of an abundance of caution, I guard against producing an 8-byte
string that might be accidentally recognized as 8-byte hexadecimal
notation by making sure the first & last bytes are NOT hex characters.
This commit is contained in:
Brian Cunnie
2025-07-12 05:50:40 -07:00
parent 48efca61ef
commit b1b95e8214

View File

@@ -28,11 +28,15 @@ func RandomIPv6Address() net.IP {
}
// Random8ByteString() returns an 8-char mixed-case string consisting solely of the letters a-z.
// the first & last characters are non-hexadecimal to avoid confusion with hexadecimal notation
func Random8ByteString() string {
var randomString []byte
for i := 0; i < 8; i++ {
// 71 == ascii 'G', +32 (103) == ascii 'g'
randomString = append(randomString, byte(71+32*rand.Intn(2)+rand.Intn(20)))
for range 6 {
// 65 == ascii 'A', +32 (96) == ascii 'a', there are 26 letters in the alphabet. Mix upper case, too.
randomString = append(randomString, byte(65+32*rand.Intn(2)+rand.Intn(26)))
}
randomString = append(randomString, byte(71+32*rand.Intn(2)+rand.Intn(20)))
return string(randomString)
}