diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2021-12-09 09:39:41 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2021-12-09 13:56:10 +0100 |
| commit | 728b1e462d8c9bef7b76a101a719f162d5b31781 (patch) | |
| tree | 8c28256b19eab53fed370651d2e4dca31d6cf3ec /tools/syz-execprog | |
| parent | a2555035a341f28d52572d5b18333d15e6b7af8d (diff) | |
tools/syz-execprog: support loading from corpus.db
Allows to execute each program from corpus.db once as a regression test.
Diffstat (limited to 'tools/syz-execprog')
| -rw-r--r-- | tools/syz-execprog/execprog.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/tools/syz-execprog/execprog.go b/tools/syz-execprog/execprog.go index ce90d781e..55065acaa 100644 --- a/tools/syz-execprog/execprog.go +++ b/tools/syz-execprog/execprog.go @@ -17,6 +17,7 @@ import ( "github.com/google/syzkaller/pkg/cover" "github.com/google/syzkaller/pkg/csource" + "github.com/google/syzkaller/pkg/db" "github.com/google/syzkaller/pkg/host" "github.com/google/syzkaller/pkg/ipc" "github.com/google/syzkaller/pkg/ipc/ipcconfig" @@ -41,7 +42,7 @@ var ( func main() { flag.Usage = func() { - fmt.Fprintf(os.Stderr, "usage: execprog [flags] file-with-programs+\n") + fmt.Fprintf(os.Stderr, "usage: execprog [flags] file-with-programs-or-corpus.db+\n") flag.PrintDefaults() csource.PrintAvailableFeaturesFlags() } @@ -272,6 +273,16 @@ func (ctx *Context) getProgramIndex() int { func loadPrograms(target *prog.Target, files []string) []*prog.Prog { var progs []*prog.Prog for _, fn := range files { + if corpus, err := db.Open(fn); err == nil { + for _, rec := range corpus.Records { + p, err := target.Deserialize(rec.Val, prog.NonStrict) + if err != nil { + continue + } + progs = append(progs, p) + } + continue + } data, err := ioutil.ReadFile(fn) if err != nil { log.Fatalf("failed to read log file: %v", err) |
