- // nolint: gosec
- package addrbook
-
- import (
- "encoding/json"
- "fmt"
- "math/rand"
-
- "github.com/tendermint/tendermint/internal/p2p"
- "github.com/tendermint/tendermint/internal/p2p/pex"
- )
-
- var addrBook = pex.NewAddrBook("./testdata/addrbook.json", true)
-
- func Fuzz(data []byte) int {
- addr := new(p2p.NetAddress)
- if err := json.Unmarshal(data, addr); err != nil {
- return -1
- }
-
- // Fuzz AddAddress.
- err := addrBook.AddAddress(addr, addr)
- if err != nil {
- return 0
- }
-
- // Also, make sure PickAddress always returns a non-nil address.
- bias := rand.Intn(100)
- if p := addrBook.PickAddress(bias); p == nil {
- panic(fmt.Sprintf("picked a nil address (bias: %d, addrBook size: %v)",
- bias, addrBook.Size()))
- }
-
- return 1
- }
|