Fix off by one error in GenUniqueItems

main
Jerry Aldrich 5 years ago
parent edbae31636
commit ccffe00110
  1. 20
      internal/helpers/helpers.go

@ -18,18 +18,24 @@ func GenUniqueItems(total int, fn genFunc, seed int64) []string {
items := []string{}
// Generate initial items
for i := 0; i <= total; i++ {
for i := 0; i < total; i++ {
items = append(items, fn(roller.TableRoll()))
}
// Walk items and check if they match any other item. If they do then replace
// it with a fresh item. This doesn't guarantee unique items, but prevents
// Denial of Service attacks (a bit)
for i, item := range items {
for x := 0; x < len(items); x++ {
if items[x] == item {
items[i] = fn(roller.TableRoll())
break
// Denial of Service attacks (a bit) by only doing 5 passes.
passes := 5
for p := 0; p <= passes; p++ {
for i, _ := range items {
for x := 0; x < len(items); x++ {
if x == i {
break
}
if items[x] == items[i] {
items[i] = fn(roller.TableRoll())
break
}
}
}
}

Loading…
Cancel
Save