diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-04-29 11:24:49 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-04-29 11:24:49 +0200 |
| commit | 49bb6b93d549c8ccb088328cac049d4b11679581 (patch) | |
| tree | f2978019af07c7b02829f7981dcd97361d6e8ae3 | |
| parent | bc0712ac2b409dba2045d23fbbefe46cf7ca9b8e (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.
| -rw-r--r-- | tools/syz-bisect/bisect.go | 21 |
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) |
