aboutsummaryrefslogtreecommitdiffstats
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
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.
-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)