aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/fuzzer/fuzzer.go32
-rw-r--r--syz-manager/manager.go30
2 files changed, 33 insertions, 29 deletions
diff --git a/pkg/fuzzer/fuzzer.go b/pkg/fuzzer/fuzzer.go
index 1f2fd90a8..ba6d93651 100644
--- a/pkg/fuzzer/fuzzer.go
+++ b/pkg/fuzzer/fuzzer.go
@@ -13,8 +13,10 @@ import (
"time"
"github.com/google/syzkaller/pkg/corpus"
+ "github.com/google/syzkaller/pkg/csource"
"github.com/google/syzkaller/pkg/flatrpc"
"github.com/google/syzkaller/pkg/fuzzer/queue"
+ "github.com/google/syzkaller/pkg/mgrconfig"
"github.com/google/syzkaller/pkg/signal"
"github.com/google/syzkaller/pkg/stat"
"github.com/google/syzkaller/prog"
@@ -414,3 +416,33 @@ func setFlags(execFlags flatrpc.ExecFlag) flatrpc.ExecOpts {
ExecFlags: execFlags,
}
}
+
+// TODO: This method belongs better to pkg/flatrpc, but we currently end up
+// having a cyclic dependency error.
+func DefaultExecOpts(cfg *mgrconfig.Config, features flatrpc.Feature, debug bool) flatrpc.ExecOpts {
+ env := csource.FeaturesToFlags(features, nil)
+ if debug {
+ env |= flatrpc.ExecEnvDebug
+ }
+ if cfg.Experimental.ResetAccState {
+ env |= flatrpc.ExecEnvResetState
+ }
+ if cfg.Cover {
+ env |= flatrpc.ExecEnvSignal
+ }
+ sandbox, err := flatrpc.SandboxToFlags(cfg.Sandbox)
+ if err != nil {
+ panic(fmt.Sprintf("failed to parse sandbox: %v", err))
+ }
+ env |= sandbox
+
+ exec := flatrpc.ExecFlagThreaded
+ if !cfg.RawCover {
+ exec |= flatrpc.ExecFlagDedupCover
+ }
+ return flatrpc.ExecOpts{
+ EnvFlags: env,
+ ExecFlags: exec,
+ SandboxArg: cfg.SandboxArg,
+ }
+}
diff --git a/syz-manager/manager.go b/syz-manager/manager.go
index ebd4b94cf..2c7d13830 100644
--- a/syz-manager/manager.go
+++ b/syz-manager/manager.go
@@ -1035,7 +1035,7 @@ func (mgr *Manager) MachineChecked(features flatrpc.Feature, enabledSyscalls map
statSyscalls.Add(len(enabledSyscalls))
corpus := mgr.loadCorpus(enabledSyscalls)
mgr.setPhaseLocked(phaseLoadedCorpus)
- opts := mgr.defaultExecOpts()
+ opts := fuzzer.DefaultExecOpts(mgr.cfg, features, *flagDebug)
if mgr.mode == ModeFuzzing {
rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
@@ -1143,34 +1143,6 @@ func (cr *corpusRunner) Next() *queue.Request {
}
}
-func (mgr *Manager) defaultExecOpts() flatrpc.ExecOpts {
- env := csource.FeaturesToFlags(mgr.enabledFeatures, nil)
- if *flagDebug {
- env |= flatrpc.ExecEnvDebug
- }
- if mgr.cfg.Experimental.ResetAccState {
- env |= flatrpc.ExecEnvResetState
- }
- if mgr.cfg.Cover {
- env |= flatrpc.ExecEnvSignal
- }
- sandbox, err := flatrpc.SandboxToFlags(mgr.cfg.Sandbox)
- if err != nil {
- panic(fmt.Sprintf("failed to parse sandbox: %v", err))
- }
- env |= sandbox
-
- exec := flatrpc.ExecFlagThreaded
- if !mgr.cfg.RawCover {
- exec |= flatrpc.ExecFlagDedupCover
- }
- return flatrpc.ExecOpts{
- EnvFlags: env,
- ExecFlags: exec,
- SandboxArg: mgr.cfg.SandboxArg,
- }
-}
-
func (mgr *Manager) corpusMinimization() {
for range time.NewTicker(time.Minute).C {
mgr.mu.Lock()