aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/mgrconfig
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-07-05 17:20:13 +0200
committerDmitry Vyukov <dvyukov@google.com>2024-07-25 13:12:57 +0000
commit4d77b9fe7da3d014943a16cb4b9a4ca3a531521a (patch)
treec37fbf8b50205eb8b830595a621ad4b355e32e9a /pkg/mgrconfig
parent206f31df2861c47b13a8c05a105afa94bcc7106c (diff)
all: add qemu snapshotting mode
Diffstat (limited to 'pkg/mgrconfig')
-rw-r--r--pkg/mgrconfig/load.go44
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
}