From 1916042ba2162e6d2ee2aa82353b326c4b24bb10 Mon Sep 17 00:00:00 2001 From: Kazuyoshi Kato Date: Sat, 21 Oct 2017 16:37:53 -0700 Subject: [PATCH] Add fuzz.sh to do fuzzing with go-fuzz (#194) Fixes #181 --- .gitignore | 1 + fuzz.go | 31 +++++++++++++++++++++++++++++++ fuzz.sh | 15 +++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 fuzz.go create mode 100755 fuzz.sh diff --git a/.gitignore b/.gitignore index f1b6190..99e38bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ test_program/test_program_bin +fuzz/ diff --git a/fuzz.go b/fuzz.go new file mode 100644 index 0000000..38f8b0a --- /dev/null +++ b/fuzz.go @@ -0,0 +1,31 @@ +// +build gofuzz + +package toml + +func Fuzz(data []byte) int { + tree, err := LoadBytes(data) + if err != nil { + if tree != nil { + panic("tree must be nil if there is an error") + } + return 0 + } + + str, err := tree.ToTomlString() + if err != nil { + if str != "" { + panic(`str must be "" if there is an error`) + } + panic(err) + } + + tree, err = LoadString(str) + if err != nil { + if tree != nil { + panic("tree must be nil if there is an error") + } + return 0 + } + + return 1 +} diff --git a/fuzz.sh b/fuzz.sh new file mode 100755 index 0000000..3204b4c --- /dev/null +++ b/fuzz.sh @@ -0,0 +1,15 @@ +#! /bin/sh +set -eu + +go get github.com/dvyukov/go-fuzz/go-fuzz +go get github.com/dvyukov/go-fuzz/go-fuzz-build + +if [ ! -e toml-fuzz.zip ]; then + go-fuzz-build github.com/pelletier/go-toml +fi + +rm -fr fuzz +mkdir -p fuzz/corpus +cp *.toml fuzz/corpus + +go-fuzz -bin=toml-fuzz.zip -workdir=fuzz