aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorVeronica Radu <veronicaradu@google.com>2019-09-09 19:22:04 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-09-23 15:35:26 +0200
commit5a7028d005c1b6be0aa0288ea1bcf3fdd1163560 (patch)
treee3b2a828ee8d6284cf4a95c94d0170abd3024659 /tools
parentbf7e28925b8894ca13f803f66d16cf2b0ae12430 (diff)
pkg/db: moved ReadCorpus function to avoid duplicate code
Diffstat (limited to 'tools')
-rw-r--r--tools/syz-mutate/mutate.go24
-rw-r--r--tools/syz-stress/stress.go24
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.