aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--CONTRIBUTORS1
-rw-r--r--pkg/mgrconfig/config.go3
-rw-r--r--pkg/mgrconfig/load.go13
-rw-r--r--syz-manager/manager.go5
5 files changed, 15 insertions, 8 deletions
diff --git a/AUTHORS b/AUTHORS
index 7e716e54a..064a1fc1c 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -41,3 +41,4 @@ Collabora
Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
Heyuan Shi
Christian Brauner
+Johannes Wellhöfer
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 51caa1122..bdb55160f 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -85,3 +85,4 @@ Congyu Liu
Kyle Evans
Darby Sauter
Christian Brauner
+Johannes Wellhöfer
diff --git a/pkg/mgrconfig/config.go b/pkg/mgrconfig/config.go
index e18607e7f..e4bfc46f8 100644
--- a/pkg/mgrconfig/config.go
+++ b/pkg/mgrconfig/config.go
@@ -104,6 +104,9 @@ type Config struct {
// but to not oversubscribe CPU and memory too severe to not cause OOMs and false hangs/stalls.
Procs int `json:"procs"`
+ // Maximum number of logs to store per crash (default: 100).
+ MaxCrashLogs int `json:"max_crash_logs"`
+
// Type of sandbox to use during fuzzing:
// "none": don't do anything special beyond resource sandboxing, default
// "setuid": impersonate into user nobody (65534). Supported only for some OSes.
diff --git a/pkg/mgrconfig/load.go b/pkg/mgrconfig/load.go
index 9814987a7..abfaa30e6 100644
--- a/pkg/mgrconfig/load.go
+++ b/pkg/mgrconfig/load.go
@@ -78,12 +78,13 @@ func LoadPartialFile(filename string) (*Config, error) {
func defaultValues() *Config {
return &Config{
- SSHUser: "root",
- Cover: true,
- Reproduce: true,
- Sandbox: "none",
- RPC: ":0",
- Procs: 6,
+ SSHUser: "root",
+ Cover: true,
+ Reproduce: true,
+ Sandbox: "none",
+ RPC: ":0",
+ MaxCrashLogs: 100,
+ Procs: 6,
}
}
diff --git a/syz-manager/manager.go b/syz-manager/manager.go
index 165c905b1..ca28efdac 100644
--- a/syz-manager/manager.go
+++ b/syz-manager/manager.go
@@ -728,12 +728,13 @@ func (mgr *Manager) saveCrash(crash *Crash) bool {
if err := osutil.WriteFile(filepath.Join(dir, "description"), []byte(crash.Title+"\n")); err != nil {
log.Logf(0, "failed to write crash: %v", err)
}
- // Save up to 100 reports. If we already have 100, overwrite the oldest one.
+
+ // Save up to mgr.cfg.MaxCrashLogs reports, overwrite the oldest once we've reached that number.
// Newer reports are generally more useful. Overwriting is also needed
// to be able to understand if a particular bug still happens or already fixed.
oldestI := 0
var oldestTime time.Time
- for i := 0; i < 100; i++ {
+ for i := 0; i < mgr.cfg.MaxCrashLogs; i++ {
info, err := os.Stat(filepath.Join(dir, fmt.Sprintf("log%v", i)))
if err != nil {
oldestI = i