From 44fe9159be031342cb956bde7dc3f3fa0340d9af Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 1 Apr 2019 12:20:19 +0200 Subject: prog/test: rename prog/fuzz to prog/test gometalinter complained about fuzz.FuzzFoo names, but go-fuzz now requires all fuzz functions to start with Fuzz. So move the package to prog/test. --- fuzz.yaml | 12 ++++---- prog/fuzz/fuzz.go | 74 -------------------------------------------------- prog/fuzz/fuzz_test.go | 30 -------------------- prog/test/fuzz.go | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ prog/test/fuzz_test.go | 30 ++++++++++++++++++++ 5 files changed, 110 insertions(+), 110 deletions(-) delete mode 100644 prog/fuzz/fuzz.go delete mode 100644 prog/fuzz/fuzz_test.go create mode 100644 prog/test/fuzz.go create mode 100644 prog/test/fuzz_test.go diff --git a/fuzz.yaml b/fuzz.yaml index de65bbae8..d4083f065 100644 --- a/fuzz.yaml +++ b/fuzz.yaml @@ -18,13 +18,13 @@ targets: function: Fuzz package: github.com/google/syzkaller/tools/syz-trace2syz/proggen build_tags: syz_target syz_os_linux syz_arch_amd64 - - name: prog.Deserialize + - name: prog-Deserialize harness: - function: Deserialize - package: github.com/google/syzkaller/prog/fuzz + function: FuzzDeserialize + package: github.com/google/syzkaller/prog/test build_tags: syz_target,syz_os_test,syz_arch_64 - - name: prog.ParseLog + - name: prog-ParseLog harness: - function: ParseLog - package: github.com/google/syzkaller/prog/fuzz + function: FuzzParseLog + package: github.com/google/syzkaller/prog/test build_tags: syz_target,syz_os_test,syz_arch_64 diff --git a/prog/fuzz/fuzz.go b/prog/fuzz/fuzz.go deleted file mode 100644 index 3a9c23359..000000000 --- a/prog/fuzz/fuzz.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2019 syzkaller project authors. All rights reserved. -// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. - -package fuzz - -import ( - "bytes" - "fmt" - "math/rand" - - "github.com/google/syzkaller/prog" - _ "github.com/google/syzkaller/sys/test/gen" // import the target we use for fuzzing -) - -func Deserialize(data []byte) int { - p0, err0 := fuzzTarget.Deserialize(data, prog.NonStrict) - p1, err1 := fuzzTarget.Deserialize(data, prog.Strict) - if p0 == nil { - if p1 != nil { - panic("NonStrict is stricter than Strict") - } - if err0 == nil || err1 == nil { - panic("no error") - } - return 0 - } - if err0 != nil { - panic("got program and error") - } - data0 := p0.Serialize() - if p1 != nil { - if err1 != nil { - panic("got program and error") - } - if !bytes.Equal(data0, p1.Serialize()) { - panic("got different data") - } - } - p2, err2 := fuzzTarget.Deserialize(data0, prog.NonStrict) - if err2 != nil { - panic(fmt.Sprintf("failed to parse serialized: %v\n%s", err2, data0)) - } - if !bytes.Equal(data0, p2.Serialize()) { - panic("got different data") - } - p3 := p0.Clone() - if !bytes.Equal(data0, p3.Serialize()) { - panic("got different data") - } - if n, err := p0.SerializeForExec(fuzzBuffer); err == nil { - if _, err := fuzzTarget.DeserializeExec(fuzzBuffer[:n]); err != nil { - panic(err) - } - } - p3.Mutate(rand.NewSource(0), 3, nil, nil) - return 0 -} - -func ParseLog(data []byte) int { - if len(fuzzTarget.ParseLog(data)) != 0 { - return 1 - } - return 0 -} - -var fuzzBuffer = make([]byte, prog.ExecBufferSize) -var fuzzTarget = func() *prog.Target { - prog.Debug() - target, err := prog.GetTarget("test", "64") - if err != nil { - panic(err) - } - return target -}() diff --git a/prog/fuzz/fuzz_test.go b/prog/fuzz/fuzz_test.go deleted file mode 100644 index 7b1426c7c..000000000 --- a/prog/fuzz/fuzz_test.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2019 syzkaller project authors. All rights reserved. -// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. - -package fuzz - -import ( - "testing" -) - -func TestFuzz(t *testing.T) { - for i, data := range []string{ - `test$length10(&200000000000009`, - `test$str0(&(0x7f0000000000)='\xz+')`, - `syz_compare(&AUTO=""/81546506777")`, - `syz_compare(&AUTO=""/190734863281259)`, - `syz_compare(&AUTO=""/500000)`, - `test$vma0(&(0x7f0000000000)=0)`, - `test$vma0(&(0x7f0000000000)=')`, - `test$length10(&(0x7f0000009000),AUTO)`, - `syz_compare(&AUTO=""/2712404) -mutate4() -mutate7() -mutate8() -`, - } { - t.Logf("test #%v: %q", i, string(data)) - Deserialize([]byte(data)) - ParseLog([]byte(data)) - } -} diff --git a/prog/test/fuzz.go b/prog/test/fuzz.go new file mode 100644 index 000000000..e86509237 --- /dev/null +++ b/prog/test/fuzz.go @@ -0,0 +1,74 @@ +// Copyright 2019 syzkaller project authors. All rights reserved. +// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +package test + +import ( + "bytes" + "fmt" + "math/rand" + + "github.com/google/syzkaller/prog" + _ "github.com/google/syzkaller/sys/test/gen" // import the target we use for fuzzing +) + +func FuzzDeserialize(data []byte) int { + p0, err0 := fuzzTarget.Deserialize(data, prog.NonStrict) + p1, err1 := fuzzTarget.Deserialize(data, prog.Strict) + if p0 == nil { + if p1 != nil { + panic("NonStrict is stricter than Strict") + } + if err0 == nil || err1 == nil { + panic("no error") + } + return 0 + } + if err0 != nil { + panic("got program and error") + } + data0 := p0.Serialize() + if p1 != nil { + if err1 != nil { + panic("got program and error") + } + if !bytes.Equal(data0, p1.Serialize()) { + panic("got different data") + } + } + p2, err2 := fuzzTarget.Deserialize(data0, prog.NonStrict) + if err2 != nil { + panic(fmt.Sprintf("failed to parse serialized: %v\n%s", err2, data0)) + } + if !bytes.Equal(data0, p2.Serialize()) { + panic("got different data") + } + p3 := p0.Clone() + if !bytes.Equal(data0, p3.Serialize()) { + panic("got different data") + } + if n, err := p0.SerializeForExec(fuzzBuffer); err == nil { + if _, err := fuzzTarget.DeserializeExec(fuzzBuffer[:n]); err != nil { + panic(err) + } + } + p3.Mutate(rand.NewSource(0), 3, nil, nil) + return 0 +} + +func FuzzParseLog(data []byte) int { + if len(fuzzTarget.ParseLog(data)) != 0 { + return 1 + } + return 0 +} + +var fuzzBuffer = make([]byte, prog.ExecBufferSize) +var fuzzTarget = func() *prog.Target { + prog.Debug() + target, err := prog.GetTarget("test", "64") + if err != nil { + panic(err) + } + return target +}() diff --git a/prog/test/fuzz_test.go b/prog/test/fuzz_test.go new file mode 100644 index 000000000..22c4066df --- /dev/null +++ b/prog/test/fuzz_test.go @@ -0,0 +1,30 @@ +// Copyright 2019 syzkaller project authors. All rights reserved. +// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +package test + +import ( + "testing" +) + +func TestFuzz(t *testing.T) { + for i, data := range []string{ + `test$length10(&200000000000009`, + `test$str0(&(0x7f0000000000)='\xz+')`, + `syz_compare(&AUTO=""/81546506777")`, + `syz_compare(&AUTO=""/190734863281259)`, + `syz_compare(&AUTO=""/500000)`, + `test$vma0(&(0x7f0000000000)=0)`, + `test$vma0(&(0x7f0000000000)=')`, + `test$length10(&(0x7f0000009000),AUTO)`, + `syz_compare(&AUTO=""/2712404) +mutate4() +mutate7() +mutate8() +`, + } { + t.Logf("test #%v: %q", i, string(data)) + FuzzDeserialize([]byte(data)) + FuzzParseLog([]byte(data)) + } +} -- cgit mrf-deployment