aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/instance/execprog.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/instance/execprog.go')
-rw-r--r--pkg/instance/execprog.go33
1 files changed, 24 insertions, 9 deletions
diff --git a/pkg/instance/execprog.go b/pkg/instance/execprog.go
index 9363998ab..e21f61a67 100644
--- a/pkg/instance/execprog.go
+++ b/pkg/instance/execprog.go
@@ -146,14 +146,26 @@ func (inst *ExecProgInstance) runBinary(bin string, duration time.Duration) (*Ru
return inst.runCommand(bin, duration, binExitConditions)
}
-func (inst *ExecProgInstance) RunCProg(p *prog.Prog, duration time.Duration,
- opts csource.Options) (*RunResult, error) {
- src, err := csource.Write(p, opts)
+type ExecParams struct {
+ // Only one of these will be used, depending on the function.
+ CProg *prog.Prog
+ SyzProg []byte
+
+ Opts csource.Options
+ Duration time.Duration
+ // If ExitConditions is empty, RunSyzProg() will assume instance.SyzExitConditions.
+ // RunCProg() always runs with binExitConditions.
+ ExitConditions vm.ExitCondition
+}
+
+func (inst *ExecProgInstance) RunCProg(params ExecParams) (*RunResult, error) {
+ src, err := csource.Write(params.CProg, params.Opts)
if err != nil {
return nil, err
}
- inst.Logf(2, "testing compiled C program (duration=%v, %+v): %s", duration, opts, p)
- return inst.RunCProgRaw(src, p.Target, duration)
+ inst.Logf(2, "testing compiled C program (duration=%v, %+v): %s",
+ params.Duration, params.Opts, params.CProg)
+ return inst.RunCProgRaw(src, params.CProg.Target, params.Duration)
}
func (inst *ExecProgInstance) RunCProgRaw(src []byte, target *prog.Target,
@@ -178,14 +190,17 @@ func (inst *ExecProgInstance) RunSyzProgFile(progFile string, duration time.Dura
return inst.runCommand(command, duration, exitCondition)
}
-func (inst *ExecProgInstance) RunSyzProg(syzProg []byte, duration time.Duration,
- opts csource.Options, exitCondition vm.ExitCondition) (*RunResult, error) {
- progFile, err := osutil.WriteTempFile(syzProg)
+func (inst *ExecProgInstance) RunSyzProg(params ExecParams) (*RunResult, error) {
+ progFile, err := osutil.WriteTempFile(params.SyzProg)
if err != nil {
return nil, err
}
defer os.Remove(progFile)
- return inst.RunSyzProgFile(progFile, duration, opts, exitCondition)
+
+ if params.ExitConditions == 0 {
+ params.ExitConditions = SyzExitConditions
+ }
+ return inst.RunSyzProgFile(progFile, params.Duration, params.Opts, params.ExitConditions)
}
func (inst *ExecProgInstance) Close() {