mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
zpay32: allow fuzzer to choose invoice net
We add a parameter to select which network will be used for the fuzz tests, rather than hardcoding the network.
This commit is contained in:
parent
e5fcc57bbc
commit
9200abf96e
@ -7,9 +7,44 @@ import (
|
||||
"github.com/btcsuite/btcd/chaincfg"
|
||||
)
|
||||
|
||||
// getPrefixAndChainParams selects network chain parameters based on the fuzzer-
|
||||
// selected input byte "net". 50% of the time mainnet is selected, while the
|
||||
// other 50% of the time one of the test networks is selected. For each network
|
||||
// the appropriate invoice HRP prefix is also returned, with a small chance that
|
||||
// no prefix is returned, allowing the fuzzer to generate invalid prefixes too.
|
||||
func getPrefixAndChainParams(net byte) (string, *chaincfg.Params) {
|
||||
switch {
|
||||
case net == 0x00:
|
||||
return "", &chaincfg.RegressionNetParams
|
||||
case net < 0x20:
|
||||
return "lnbcrt", &chaincfg.RegressionNetParams
|
||||
|
||||
case net == 0x20:
|
||||
return "", &chaincfg.TestNet3Params
|
||||
case net < 0x40:
|
||||
return "lntb", &chaincfg.TestNet3Params
|
||||
|
||||
case net == 0x40:
|
||||
return "", &chaincfg.SimNetParams
|
||||
case net < 0x60:
|
||||
return "lnsb", &chaincfg.SimNetParams
|
||||
|
||||
case net == 0x60:
|
||||
return "", &chaincfg.SigNetParams
|
||||
case net < 0x80:
|
||||
return "lntbs", &chaincfg.SigNetParams
|
||||
|
||||
case net == 0x80:
|
||||
return "", &chaincfg.MainNetParams
|
||||
default:
|
||||
return "lnbc", &chaincfg.MainNetParams
|
||||
}
|
||||
}
|
||||
|
||||
func FuzzDecode(f *testing.F) {
|
||||
f.Fuzz(func(t *testing.T, data string) {
|
||||
_, _ = Decode(data, &chaincfg.TestNet3Params)
|
||||
f.Fuzz(func(t *testing.T, net byte, data string) {
|
||||
_, chainParams := getPrefixAndChainParams(net)
|
||||
_, _ = Decode(data, chainParams)
|
||||
})
|
||||
}
|
||||
|
||||
@ -44,13 +79,14 @@ func appendChecksum(bech string) string {
|
||||
}
|
||||
|
||||
func FuzzEncode(f *testing.F) {
|
||||
f.Fuzz(func(t *testing.T, data string) {
|
||||
f.Fuzz(func(t *testing.T, net byte, data string) {
|
||||
// Make it easier for the fuzzer to generate valid invoice
|
||||
// encodings by adding the required prefix and valid checksum.
|
||||
data = "lnbc" + data
|
||||
hrpPrefix, chainParams := getPrefixAndChainParams(net)
|
||||
data = hrpPrefix + data
|
||||
data = appendChecksum(data)
|
||||
|
||||
inv, err := Decode(data, &chaincfg.MainNetParams)
|
||||
inv, err := Decode(data, chainParams)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user