aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-05-14 12:16:35 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-05-14 12:17:34 +0200
commit477728038c7fcef8ed4a6ef6381a8ca60ec99e14 (patch)
tree86e456e7633d5fab8465661468236fee7e7bac4c
parent2407e7407a538d8a2321bfaa16c43cc0b83f81ae (diff)
syz-ci: fix manager config creation
SyzFuzzerBin/SyzExecprogBin/SyzExecutorBin are ended up being empty. Fix this.
-rw-r--r--syz-ci/manager.go10
-rw-r--r--syz-manager/mgrconfig/mgrconfig.go33
2 files changed, 22 insertions, 21 deletions
diff --git a/syz-ci/manager.go b/syz-ci/manager.go
index dfc0f92af..df5970602 100644
--- a/syz-ci/manager.go
+++ b/syz-ci/manager.go
@@ -94,6 +94,7 @@ func createManager(cfg *Config, mgrcfg *ManagerConfig, stop chan struct{}) *Mana
log.Fatalf("failed to load manager %v config: %v", mgrcfg.Name, err)
}
managercfg.Name = cfg.Name + "-" + mgrcfg.Name
+ managercfg.Syzkaller = filepath.FromSlash("syzkaller/current")
mgr := &Manager{
name: managercfg.Name,
@@ -438,7 +439,6 @@ func (mgr *Manager) createTestConfig(imageDir string, info *BuildInfo) (*mgrconf
mgrcfg.Image = filepath.Join(imageDir, "image")
mgrcfg.SSHKey = filepath.Join(imageDir, "key")
mgrcfg.KernelSrc = mgr.kernelDir
- mgrcfg.Syzkaller = filepath.FromSlash("syzkaller/current")
if err := mgrconfig.Complete(mgrcfg); err != nil {
return nil, fmt.Errorf("bad manager config: %v", err)
}
@@ -466,17 +466,15 @@ func (mgr *Manager) writeConfig(buildTag string) (string, error) {
// update the source, or even delete and re-clone. If this causes
// problems, we need to make a copy of sources after build.
mgrcfg.KernelSrc = mgr.kernelDir
- mgrcfg.Syzkaller = filepath.FromSlash("syzkaller/current")
mgrcfg.Image = filepath.Join(mgr.currentDir, "image")
mgrcfg.SSHKey = filepath.Join(mgr.currentDir, "key")
-
+ if err := mgrconfig.Complete(mgrcfg); err != nil {
+ return "", fmt.Errorf("bad manager config: %v", err)
+ }
configFile := filepath.Join(mgr.currentDir, "manager.cfg")
if err := config.SaveFile(configFile, mgrcfg); err != nil {
return "", err
}
- if _, err := mgrconfig.LoadFile(configFile); err != nil {
- return "", err
- }
return configFile, nil
}
diff --git a/syz-manager/mgrconfig/mgrconfig.go b/syz-manager/mgrconfig/mgrconfig.go
index bc8c5eafa..1b9eb4202 100644
--- a/syz-manager/mgrconfig/mgrconfig.go
+++ b/syz-manager/mgrconfig/mgrconfig.go
@@ -151,16 +151,6 @@ func loadPartial(cfg *Config) (*Config, error) {
if err != nil {
return nil, err
}
- targetBin := func(name, arch string) string {
- exe := ""
- if cfg.TargetOS == "windows" {
- exe = ".exe"
- }
- return filepath.Join(cfg.Syzkaller, "bin", cfg.TargetOS+"_"+arch, name+exe)
- }
- cfg.SyzFuzzerBin = targetBin("syz-fuzzer", cfg.TargetVMArch)
- cfg.SyzExecprogBin = targetBin("syz-execprog", cfg.TargetVMArch)
- cfg.SyzExecutorBin = targetBin("syz-executor", cfg.TargetArch)
return cfg, nil
}
@@ -171,6 +161,24 @@ func Complete(cfg *Config) error {
if cfg.SSHUser == "" {
return fmt.Errorf("bad config syzkaller param: ssh user is empty")
}
+ if cfg.Workdir == "" {
+ return fmt.Errorf("config param workdir is empty")
+ }
+ cfg.Workdir = osutil.Abs(cfg.Workdir)
+ if cfg.Syzkaller == "" {
+ return fmt.Errorf("config param syzkaller is empty")
+ }
+ cfg.Syzkaller = osutil.Abs(cfg.Syzkaller)
+ targetBin := func(name, arch string) string {
+ exe := ""
+ if cfg.TargetOS == "windows" {
+ exe = ".exe"
+ }
+ return filepath.Join(cfg.Syzkaller, "bin", cfg.TargetOS+"_"+arch, name+exe)
+ }
+ cfg.SyzFuzzerBin = targetBin("syz-fuzzer", cfg.TargetVMArch)
+ cfg.SyzExecprogBin = targetBin("syz-execprog", cfg.TargetVMArch)
+ cfg.SyzExecutorBin = targetBin("syz-executor", cfg.TargetArch)
if !osutil.IsExist(cfg.SyzFuzzerBin) {
return fmt.Errorf("bad config syzkaller param: can't find %v", cfg.SyzFuzzerBin)
}
@@ -183,9 +191,6 @@ func Complete(cfg *Config) error {
if cfg.HTTP == "" {
return fmt.Errorf("config param http is empty")
}
- if cfg.Workdir == "" {
- return fmt.Errorf("config param workdir is empty")
- }
if cfg.Type == "" {
return fmt.Errorf("config param type is empty")
}
@@ -207,9 +212,7 @@ func Complete(cfg *Config) error {
}
}
- cfg.Workdir = osutil.Abs(cfg.Workdir)
cfg.Vmlinux = osutil.Abs(cfg.Vmlinux)
- cfg.Syzkaller = osutil.Abs(cfg.Syzkaller)
if cfg.KernelSrc == "" {
cfg.KernelSrc = filepath.Dir(cfg.Vmlinux) // assume in-tree build by default
}