diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-07-05 17:20:13 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-07-25 13:12:57 +0000 |
| commit | 4d77b9fe7da3d014943a16cb4b9a4ca3a531521a (patch) | |
| tree | c37fbf8b50205eb8b830595a621ad4b355e32e9a /pkg/mgrconfig | |
| parent | 206f31df2861c47b13a8c05a105afa94bcc7106c (diff) | |
all: add qemu snapshotting mode
Diffstat (limited to 'pkg/mgrconfig')
| -rw-r--r-- | pkg/mgrconfig/load.go | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/pkg/mgrconfig/load.go b/pkg/mgrconfig/load.go index eb20b6b68..6f92a232e 100644 --- a/pkg/mgrconfig/load.go +++ b/pkg/mgrconfig/load.go @@ -130,6 +130,9 @@ func Complete(cfg *Config) error { ); err != nil { return err } + if cfg.Snapshot && cfg.Reproduce { + return fmt.Errorf("reproduction is not (yet) supported in snapshot mode") + } cfg.Workdir = osutil.Abs(cfg.Workdir) if cfg.WorkdirTemplate != "" { cfg.WorkdirTemplate = osutil.Abs(cfg.WorkdirTemplate) @@ -159,6 +162,29 @@ func Complete(cfg *Config) error { } cfg.CompleteKernelDirs() + if err := cfg.completeServices(); err != nil { + return nil + } + + if cfg.FuzzingVMs < 0 { + return fmt.Errorf("fuzzing_vms cannot be less than 0") + } + + var err error + cfg.Syscalls, err = ParseEnabledSyscalls(cfg.Target, cfg.EnabledSyscalls, cfg.DisabledSyscalls) + if err != nil { + return err + } + cfg.NoMutateCalls, err = ParseNoMutateSyscalls(cfg.Target, cfg.NoMutateSyscalls) + if err != nil { + return err + } + cfg.initTimeouts() + cfg.VMLess = cfg.Type == "none" + return nil +} + +func (cfg *Config) completeServices() error { if cfg.HubClient != "" { if err := checkNonEmpty( cfg.Name, "name", @@ -179,30 +205,14 @@ func Complete(cfg *Config) error { return err } } - if cfg.FuzzingVMs < 0 { - return fmt.Errorf("fuzzing_vms cannot be less than 0") - } - - var err error - cfg.Syscalls, err = ParseEnabledSyscalls(cfg.Target, cfg.EnabledSyscalls, cfg.DisabledSyscalls) - if err != nil { - return err - } - cfg.NoMutateCalls, err = ParseNoMutateSyscalls(cfg.Target, cfg.NoMutateSyscalls) - if err != nil { - return err - } if !cfg.AssetStorage.IsEmpty() { if cfg.DashboardClient == "" { return fmt.Errorf("asset storage also requires dashboard client") } - err = cfg.AssetStorage.Validate() - if err != nil { + if err := cfg.AssetStorage.Validate(); err != nil { return err } } - cfg.initTimeouts() - cfg.VMLess = cfg.Type == "none" return nil } |
