diff options
| author | Veronica Radu <veronicaradu@google.com> | 2019-09-09 19:22:04 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-09-23 15:35:26 +0200 |
| commit | 5a7028d005c1b6be0aa0288ea1bcf3fdd1163560 (patch) | |
| tree | e3b2a828ee8d6284cf4a95c94d0170abd3024659 /tools | |
| parent | bf7e28925b8894ca13f803f66d16cf2b0ae12430 (diff) | |
pkg/db: moved ReadCorpus function to avoid duplicate code
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/syz-mutate/mutate.go | 24 | ||||
| -rw-r--r-- | tools/syz-stress/stress.go | 24 |
2 files changed, 8 insertions, 40 deletions
diff --git a/tools/syz-mutate/mutate.go b/tools/syz-mutate/mutate.go index 56aab8ee1..bde2a27d6 100644 --- a/tools/syz-mutate/mutate.go +++ b/tools/syz-mutate/mutate.go @@ -58,9 +58,10 @@ func main() { if *flagSeed != -1 { seed = int64(*flagSeed) } - var corpus []*prog.Prog - if *flagCorpus != "" { - corpus = readCorpus(*flagCorpus, target) + corpus, err := db.ReadCorpus(*flagCorpus, target) + if err != nil { + fmt.Fprintf(os.Stderr, "failed to read corpus: %v", err) + os.Exit(1) } rs := rand.NewSource(seed) prios := target.CalculatePriorities(corpus) @@ -83,20 +84,3 @@ func main() { } fmt.Printf("%s\n", p.Serialize()) } - -func readCorpus(filename string, target *prog.Target) (corpus []*prog.Prog) { - dbObj, err := db.Open(filename) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to open the corpus file: %v\n", err) - os.Exit(1) - } - for _, v := range dbObj.Records { - p, err := target.Deserialize(v.Val, prog.NonStrict) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to deserialize the program: %v\n", err) - os.Exit(1) - } - corpus = append(corpus, p) - } - return corpus -} diff --git a/tools/syz-stress/stress.go b/tools/syz-stress/stress.go index 5ca0c5347..af78906ab 100644 --- a/tools/syz-stress/stress.go +++ b/tools/syz-stress/stress.go @@ -57,7 +57,10 @@ func main() { if err != nil { log.Fatalf("%v", err) } - corpus := readCorpus(target) + corpus, err := db.ReadCorpus(*flagCorpus, target) + if err != nil { + log.Fatalf("failed to read corpus: %v", err) + } log.Logf(0, "parsed %v programs", len(corpus)) if !*flagGenerate && len(corpus) == 0 { log.Fatalf("nothing to mutate (-generate=false and no corpus)") @@ -153,25 +156,6 @@ func execute(pid int, env *ipc.Env, execOpts *ipc.ExecOpts, p *prog.Prog) { } } -func readCorpus(target *prog.Target) []*prog.Prog { - if *flagCorpus == "" { - return nil - } - db, err := db.Open(*flagCorpus) - if err != nil { - log.Fatalf("failed to open corpus database: %v", err) - } - var progs []*prog.Prog - for _, rec := range db.Records { - p, err := target.Deserialize(rec.Val, prog.NonStrict) - if err != nil { - log.Fatalf("failed to deserialize corpus program: %v", err) - } - progs = append(progs, p) - } - return progs -} - func buildCallList(target *prog.Target, enabled []string) map[*prog.Syscall]bool { if *flagOS != runtime.GOOS { // This is currently used on akaros, where syz-stress runs on host. |
