aboutsummaryrefslogtreecommitdiffstats
path: root/tools/syz-execprog
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2021-12-09 09:39:41 +0100
committerDmitry Vyukov <dvyukov@google.com>2021-12-09 13:56:10 +0100
commit728b1e462d8c9bef7b76a101a719f162d5b31781 (patch)
tree8c28256b19eab53fed370651d2e4dca31d6cf3ec /tools/syz-execprog
parenta2555035a341f28d52572d5b18333d15e6b7af8d (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.go13
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)