aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-12-10 15:10:33 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-12-10 16:37:02 +0100
commitc7ba317e9bfa7672d851df1217c2c3ea045c55f1 (patch)
tree8ccc14054d803776a152a4603c7bfff6576e382b /pkg
parent593b260b0233013ce7bbd5acf39263ab83244a14 (diff)
tools/syz-runtest: test program parsing before booting VMs
It sucks to wait for VMs to boot just to discover that programs don't parse.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/runtest/run.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/pkg/runtest/run.go b/pkg/runtest/run.go
index d6543e0b8..bec1d7667 100644
--- a/pkg/runtest/run.go
+++ b/pkg/runtest/run.go
@@ -208,11 +208,20 @@ func (ctx *Context) generatePrograms(progs chan *RunRequest) error {
}
func (ctx *Context) parseProg(filename string) (*prog.Prog, map[string]bool, *ipc.ProgInfo, error) {
- data, err := ioutil.ReadFile(filepath.Join(ctx.Dir, filename))
+ return parseProg(ctx.Target, ctx.Dir, filename)
+}
+
+func TestParseProg(target *prog.Target, dir, filename string) error {
+ _, _, _, err := parseProg(target, dir, filename)
+ return err
+}
+
+func parseProg(target *prog.Target, dir, filename string) (*prog.Prog, map[string]bool, *ipc.ProgInfo, error) {
+ data, err := ioutil.ReadFile(filepath.Join(dir, filename))
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to read %v: %v", filename, err)
}
- p, err := ctx.Target.Deserialize(data, prog.Strict)
+ p, err := target.Deserialize(data, prog.Strict)
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to deserialize %v: %v", filename, err)
}