Correct the function GenerateName

The problem was the encode in `name += string(alphabet[])`
It takes only 1 byte but the characters like 'è','@' are encoding
on several bytes (1 to 4 bytes).
The better solution was to create a slice of string, like this
we don't have problem about take only one byte instead of 2,3 or 4
bytes.
This commit is contained in:
MrArmonius 2021-07-26 15:36:45 +02:00
parent 9a8c19ec0f
commit a53641e773

View file

@ -32,7 +32,9 @@ func PrintError(LDAPError error) {
//Generate an unique name, which store in all_names
func (inst *instance) GenerateName() (name string) {
alphabet := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
alphabet := []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y",
"Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "é", "è", "ê", "ë", "à", "@", "â", "ä", "û", "ü", "ù", "$", "£", "%", "ø", "€"}
length := R.Intn(maxlength_generateName) + minlength_generateName
//Check if this name not exist already
@ -41,7 +43,7 @@ func (inst *instance) GenerateName() (name string) {
for only_one := true; only_one; _, only_one = allNames.cn[name] {
//Create the name
for i := 0; i < length; i++ {
name += string(alphabet[R.Intn(len(alphabet))])
name += alphabet[R.Intn(len(alphabet))]
}
}