aboutsummaryrefslogtreecommitdiffstats
path: root/tools/syz-bisect
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-04-29 11:24:49 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-04-29 11:24:49 +0200
commit49bb6b93d549c8ccb088328cac049d4b11679581 (patch)
treef2978019af07c7b02829f7981dcd97361d6e8ae3 /tools/syz-bisect
parentbc0712ac2b409dba2045d23fbbefe46cf7ca9b8e (diff)
tools/syz-bisect: fix file presence check
1. Filename should be relative to flagCrash, not the current dir. 2. Use osutil.IsExist, os.Stat can fail for other reasons, e.g. no permissions. 3. Dedup filepresence check.
Diffstat (limited to 'tools/syz-bisect')
-rw-r--r--tools/syz-bisect/bisect.go21
1 files changed, 11 insertions, 10 deletions
diff --git a/tools/syz-bisect/bisect.go b/tools/syz-bisect/bisect.go
index 741a3433d..b3a307887 100644
--- a/tools/syz-bisect/bisect.go
+++ b/tools/syz-bisect/bisect.go
@@ -31,6 +31,7 @@ import (
"github.com/google/syzkaller/pkg/bisect"
"github.com/google/syzkaller/pkg/config"
"github.com/google/syzkaller/pkg/mgrconfig"
+ "github.com/google/syzkaller/pkg/osutil"
)
var (
@@ -100,14 +101,10 @@ func main() {
}
loadString("syzkaller.commit", &cfg.Syzkaller.Commit)
loadString("kernel.commit", &cfg.Kernel.Commit)
- loadFile("kernel.config", &cfg.Kernel.Config)
- if _, err := os.Stat("repro.syz"); err == nil {
- loadFile("repro.syz", &cfg.Repro.Syz)
- }
- if _, err := os.Stat("repro.c"); err == nil {
- loadFile("repro.c", &cfg.Repro.C)
- }
- loadFile("repro.opts", &cfg.Repro.Opts)
+ loadFile("kernel.config", &cfg.Kernel.Config, true)
+ loadFile("repro.syz", &cfg.Repro.Syz, false)
+ loadFile("repro.c", &cfg.Repro.C, false)
+ loadFile("repro.opts", &cfg.Repro.Opts, true)
if _, err := bisect.Run(cfg); err != nil {
fmt.Fprintf(os.Stderr, "bisection failed: %v\n", err)
os.Exit(1)
@@ -123,8 +120,12 @@ func loadString(file string, dst *string) {
*dst = strings.TrimSpace(string(data))
}
-func loadFile(file string, dst *[]byte) {
- data, err := ioutil.ReadFile(filepath.Join(*flagCrash, file))
+func loadFile(file string, dst *[]byte, mandatory bool) {
+ filename := filepath.Join(*flagCrash, file)
+ if !mandatory && !osutil.IsExist(filename) {
+ return
+ }
+ data, err := ioutil.ReadFile(filename)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)