diff --git a/fuzzing/packet/.gitignore b/fuzzing/packet/.gitignore index 818d7868797b745e3ae7288b3a38140ecff02e11..caa15264d86c49b6614d36db1444140617445726 100644 --- a/fuzzing/packet/.gitignore +++ b/fuzzing/packet/.gitignore @@ -1 +1,3 @@ packet-fuzz.zip +crashers +suppressions diff --git a/protocols/bgp/packet/fuzzing.go b/protocols/bgp/packet/fuzzing.go index 7428662df2971a36dcc9046f6ab0d50b210eb504..0adaded071d6eb2f23ecd4eb92055daa266cd8bb 100644 --- a/protocols/bgp/packet/fuzzing.go +++ b/protocols/bgp/packet/fuzzing.go @@ -1,8 +1,13 @@ -// +build gofuzz +// foobar +// +bu ild go fuzz package packet -import "bytes" +import ( + "bytes" + + "github.com/bio-routing/bio-rd/protocols/bgp/types" +) const ( INC_PRIO = 1 @@ -13,13 +18,32 @@ const ( func Fuzz(data []byte) int { buf := bytes.NewBuffer(data) - msg, err := Decode(buf) - if err != nil { - if msg != nil { - panic("msg != nil on error") + for _, option := range getAllOptions() { + msg, err := Decode(buf, &option) + if err != nil { + if msg != nil { + panic("msg != nil on error") + } + } - return KEEP + return INC_PRIO } + return KEEP +} - return INC_PRIO +func getAllOptions() []types.Options { + parameters := []bool{true, false} + var ret []types.Options + for _, octet := range parameters { + for _, multi := range parameters { + for _, addPathX := range parameters { + ret = append(ret, types.Options{ + Supports4OctetASN: octet, + SupportsMultiProtocol: multi, + AddPathRX: addPathX, + }) + } + } + } + return ret }