diff --git a/src/app/spreed-speakfreely-server/random.go b/src/app/spreed-speakfreely-server/random.go index 45c48e7a..6dda7b51 100644 --- a/src/app/spreed-speakfreely-server/random.go +++ b/src/app/spreed-speakfreely-server/random.go @@ -21,7 +21,8 @@ package main import ( - "math/rand" + "crypto/rand" + pseudoRand "math/rand" "time" ) @@ -32,14 +33,22 @@ const ( func RandomString(length int) string { buf := make([]byte, length) - for i := 0; i < length; i++ { - buf[i] = dict[rand.Intn(len(dict)-1)] + _, err := rand.Read(buf) + if err != nil { + // fallback to pseudo-random + for i := 0; i < length; i++ { + buf[i] = dict[pseudoRand.Intn(len(dict))] + } + } else { + for i := 0; i < length; i++ { + buf[i] = dict[int(buf[i])%len(dict)] + } } return string(buf) } func init() { - // Make sure to seed dsfault random generator. - rand.Seed(time.Now().UTC().UnixNano()) + // Make sure to seed default random generator. + pseudoRand.Seed(time.Now().UTC().UnixNano()) }