aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2025-09-18 17:36:53 +0200
committerTaras Madan <tarasmadan@google.com>2025-10-07 15:25:13 +0000
commit99ed12e158687b7aba55eac142d6bad3f147d029 (patch)
treea9809d7c5d60f45b805e0346a9a543ba0651a9e1 /tools
parent790f0ffe2224829b20e4dc6556c090c503e1d161 (diff)
syz-cluster: rewrite fuzz config generation
Instead of a predefined set of manually written syz-manager configs, construct it dynamically from different bits. During triage, select not just one, but all matching fuzzer configurations and then merge them together.
Diffstat (limited to 'tools')
-rw-r--r--tools/syz-db/syz-db.go27
1 files changed, 6 insertions, 21 deletions
diff --git a/tools/syz-db/syz-db.go b/tools/syz-db/syz-db.go
index 3cec95097..65d1c5ba8 100644
--- a/tools/syz-db/syz-db.go
+++ b/tools/syz-db/syz-db.go
@@ -169,30 +169,15 @@ func unpack(file, dir string) {
}
func merge(file string, adds []string, target *prog.Target) {
- dstDB, err := db.Open(file, false)
+ failures, err := db.Merge(file, adds, target)
if err != nil {
- tool.Failf("failed to open database: %v", err)
+ tool.Failf("%s", err)
}
- for _, add := range adds {
- if addDB, err := db.Open(add, false); err == nil {
- for key, rec := range addDB.Records {
- dstDB.Save(key, rec.Val, rec.Seq)
- }
- continue
- } else if target == nil {
- tool.Failf("failed to open db %v: %v", add, err)
- }
- data, err := os.ReadFile(add)
- if err != nil {
- tool.Fail(err)
- }
- if _, err := target.Deserialize(data, prog.NonStrict); err != nil {
- tool.Failf("failed to deserialize %v: %v", add, err)
+ if len(failures) > 0 {
+ for _, fail := range failures {
+ fmt.Printf("failed to deserialize a record from %s: %s\n", fail.File, fail.Err)
}
- dstDB.Save(hash.String(data), data, 0)
- }
- if err := dstDB.Flush(); err != nil {
- tool.Failf("failed to save db: %v", err)
+ tool.Failf("there have been deserialization errors")
}
}