diff options
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") } } |
