diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2025-09-18 17:36:53 +0200 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2025-10-07 15:25:13 +0000 |
| commit | 99ed12e158687b7aba55eac142d6bad3f147d029 (patch) | |
| tree | a9809d7c5d60f45b805e0346a9a543ba0651a9e1 /tools | |
| parent | 790f0ffe2224829b20e4dc6556c090c503e1d161 (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.go | 27 |
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") } } |
