Skip to content

Commit

Permalink
Add a nix-shell fuzzing file
Browse files Browse the repository at this point in the history
Signed-off-by: Jeroen Simonetti <jeroen@simonetti.nl>
  • Loading branch information
jsimonetti committed Oct 27, 2020
1 parent 3547e77 commit 3113acb
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 12 deletions.
5 changes: 4 additions & 1 deletion Makefile.fuzz
Expand Up @@ -22,7 +22,10 @@ install:
.PHONY: fuzz
fuzz:
go-fuzz-build -tags gofuzz
go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata
echo go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata -func FuzzLinkMessage
echo go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata -func FuzzAddressMessage
echo go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata -func FuzzRouteMessage
echo go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata -func FuzzNeighMessage

.PHONY: clean
clean:
Expand Down
34 changes: 34 additions & 0 deletions fuzz-shell.nix
@@ -0,0 +1,34 @@
with import <nixpkgs> { };
pkgs.mkShell {
name = "go-fuzz";
buildInputs = [ go ];
shellHook = ''
function setup() {
export GOPATH=$(mktemp -d /tmp/GOPATH.XXXXXX)
mkdir -p $GOPATH/src
pushd $GOPATH/src
go get github.com/dvyukov/go-fuzz/go-fuzz
go get github.com/dvyukov/go-fuzz/go-fuzz-build
popd
}
function teardown() {
chmod -R u+w $GOPATH
rm -rf $GOPATH
}
setup
trap teardown EXIT
alias fuzzbuild="$GOPATH/bin/go-fuzz-build -tags gofuzz"
alias fuzzlink="$GOPATH/bin/go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata -func FuzzLinkMessage"
alias fuzzaddress="$GOPATH/bin/go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata -func FuzzAddressMessage"
alias fuzzroute="$GOPATH/bin/go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata -func FuzzRouteMessage"
alias fuzzneigh="$GOPATH/bin/go-fuzz -bin=./rtnetlink-fuzz.zip -workdir=testdata -func FuzzNeighMessage"
echo "Fuzz environment ready. There are 5 aliases available:"
echo ""
echo "fuzzbuild - will build the fuzzing file"
echo "fuzzlink - will start fuzzing Link Messages"
echo "fuzzaddress - will start fuzzing Address Messages"
echo "fuzzroute - will start fuzzing Route Messages"
echo "fuzzneigh - will start fuzzing Neigh Messages"
echo ""
'';
}
19 changes: 8 additions & 11 deletions fuzz.go
Expand Up @@ -2,14 +2,8 @@

package rtnetlink

func Fuzz(data []byte) int {
return fuzzLinkMessage(data)
//return fuzzAddressMessage(data)
//return fuzzRouteMessage(data)
//return fuzzNeighMessage(data)
}

func fuzzLinkMessage(data []byte) int {
// FuzzLinkMessage
func FuzzLinkMessage(data []byte) int {
m := &LinkMessage{}
if err := (m).UnmarshalBinary(data); err != nil {
return 0
Expand All @@ -22,7 +16,8 @@ func fuzzLinkMessage(data []byte) int {
return 1
}

func fuzzAddressMessage(data []byte) int {
// FuzzAddressMessage
func FuzzAddressMessage(data []byte) int {
m := &AddressMessage{}
if err := (m).UnmarshalBinary(data); err != nil {
return 0
Expand All @@ -35,7 +30,8 @@ func fuzzAddressMessage(data []byte) int {
return 1
}

func fuzzRouteMessage(data []byte) int {
// FuzzRouteMessage
func FuzzRouteMessage(data []byte) int {
m := &RouteMessage{}
if err := (m).UnmarshalBinary(data); err != nil {
return 0
Expand All @@ -48,7 +44,8 @@ func fuzzRouteMessage(data []byte) int {
return 1
}

func fuzzNeighMessage(data []byte) int {
// FuzzNeighMessage
func FuzzNeighMessage(data []byte) int {
m := &NeighMessage{}
if err := (m).UnmarshalBinary(data); err != nil {
return 0
Expand Down

0 comments on commit 3113acb

Please sign in to comment.