aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
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")
}
}