From f40e2687acd44d06947612b3da51d0eee21ca345 Mon Sep 17 00:00:00 2001 From: Elle Mouton Date: Thu, 21 Apr 2022 10:56:38 +0200 Subject: [PATCH] lnwire: add randOpaqueAddrs for fuzz test Let TestLightningWireProtocol also include random OpaqueAddrs. --- lnwire/lnwire_test.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lnwire/lnwire_test.go b/lnwire/lnwire_test.go index 3cbc34803..ec528a38a 100644 --- a/lnwire/lnwire_test.go +++ b/lnwire/lnwire_test.go @@ -159,6 +159,22 @@ func randV3OnionAddr(r *rand.Rand) (*tor.OnionAddr, error) { return &tor.OnionAddr{OnionService: onionService, Port: addrPort}, nil } +func randOpaqueAddr(r *rand.Rand) (*OpaqueAddrs, error) { + payloadLen := r.Int63n(64) + 1 + payload := make([]byte, payloadLen) + + // The first byte is the address type. So set it to one that we + // definitely don't know about. + payload[0] = math.MaxUint8 + + // Generate random bytes for the rest of the payload. + if _, err := r.Read(payload[1:]); err != nil { + return nil, err + } + + return &OpaqueAddrs{Payload: payload}, nil +} + func randAddrs(r *rand.Rand) ([]net.Addr, error) { tcp4Addr, err := randTCP4Addr(r) if err != nil { @@ -180,7 +196,14 @@ func randAddrs(r *rand.Rand) ([]net.Addr, error) { return nil, err } - return []net.Addr{tcp4Addr, tcp6Addr, v2OnionAddr, v3OnionAddr}, nil + opaqueAddrs, err := randOpaqueAddr(r) + if err != nil { + return nil, err + } + + return []net.Addr{ + tcp4Addr, tcp6Addr, v2OnionAddr, v3OnionAddr, opaqueAddrs, + }, nil } // TestChanUpdateChanFlags ensures that converting the ChanUpdateChanFlags and