diff options
| -rw-r--r-- | pkg/fuzzer/fuzzer.go | 32 | ||||
| -rw-r--r-- | syz-manager/manager.go | 30 |
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() |
