aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorVeronica Radu <veronicaradu@google.com>2019-09-09 19:22:04 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-09-23 15:35:26 +0200
commit5a7028d005c1b6be0aa0288ea1bcf3fdd1163560 (patch)
treee3b2a828ee8d6284cf4a95c94d0170abd3024659 /pkg
parentbf7e28925b8894ca13f803f66d16cf2b0ae12430 (diff)
pkg/db: moved ReadCorpus function to avoid duplicate code
Diffstat (limited to 'pkg')
-rw-r--r--pkg/db/db.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/pkg/db/db.go b/pkg/db/db.go
index e3492031b..17723b224 100644
--- a/pkg/db/db.go
+++ b/pkg/db/db.go
@@ -21,6 +21,7 @@ import (
"github.com/google/syzkaller/pkg/hash"
"github.com/google/syzkaller/pkg/log"
"github.com/google/syzkaller/pkg/osutil"
+ "github.com/google/syzkaller/prog"
)
type DB struct {
@@ -283,3 +284,21 @@ func Create(filename string, version uint64, records []Record) error {
}
return nil
}
+
+func ReadCorpus(filename string, target *prog.Target) (progs []*prog.Prog, err error) {
+ if filename == "" {
+ return
+ }
+ db, err := Open(filename)
+ if err != nil {
+ return nil, fmt.Errorf("failed to open database file: %v", err)
+ }
+ for _, rec := range db.Records {
+ p, err := target.Deserialize(rec.Val, prog.NonStrict)
+ if err != nil {
+ return nil, fmt.Errorf("failed to deserialize corpus program: %v", err)
+ }
+ progs = append(progs, p)
+ }
+ return progs, nil
+}