aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-10-14 15:26:12 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-10-14 19:43:15 +0000
commit56381a3b0c5178a73a7ad714a54dab5ab47e0ffa (patch)
treed62feb1fcd398ab524b76c8aaedb1278a9c20f3b /pkg
parent25a669a944a3f6c35bfb05123e5cd2215fd5d23b (diff)
pkg/runtest: rely on pkg/manager seed loading logic
It will help us catch broken seeds right in TestParse().
Diffstat (limited to 'pkg')
-rw-r--r--pkg/manager/seeds.go16
-rw-r--r--pkg/runtest/run.go3
2 files changed, 14 insertions, 5 deletions
diff --git a/pkg/manager/seeds.go b/pkg/manager/seeds.go
index 80248f04c..1e674c2f9 100644
--- a/pkg/manager/seeds.go
+++ b/pkg/manager/seeds.go
@@ -56,7 +56,7 @@ func LoadSeeds(cfg *mgrconfig.Config, immutable bool) Seeds {
go func() {
defer wg.Done()
for inp := range inputs {
- inp.Prog, inp.Err = LoadProg(cfg.Target, inp.Data)
+ inp.Prog, inp.Err = ParseSeed(cfg.Target, inp.Data)
outputs <- inp
}
}()
@@ -178,13 +178,21 @@ func versionToFlags(version uint64) fuzzer.ProgFlags {
return corpusFlags
}
-func LoadProg(target *prog.Target, data []byte) (*prog.Prog, error) {
- p, err := target.Deserialize(data, prog.NonStrict)
+func ParseSeed(target *prog.Target, data []byte) (*prog.Prog, error) {
+ return parseProg(target, data, prog.NonStrict)
+}
+
+func ParseSeedStrict(target *prog.Target, data []byte) (*prog.Prog, error) {
+ return parseProg(target, data, prog.Strict)
+}
+
+func parseProg(target *prog.Target, data []byte, mode prog.DeserializeMode) (*prog.Prog, error) {
+ p, err := target.Deserialize(data, mode)
if err != nil {
return nil, err
}
if len(p.Calls) > prog.MaxCalls {
- return nil, fmt.Errorf("longer than %d calls", prog.MaxCalls)
+ return nil, fmt.Errorf("longer than %d calls (%d)", prog.MaxCalls, len(p.Calls))
}
// For some yet unknown reasons, programs with fail_nth > 0 may sneak in. Ignore them.
for _, call := range p.Calls {
diff --git a/pkg/runtest/run.go b/pkg/runtest/run.go
index eb1d0b131..1ea5c7a7e 100644
--- a/pkg/runtest/run.go
+++ b/pkg/runtest/run.go
@@ -26,6 +26,7 @@ import (
"github.com/google/syzkaller/pkg/csource"
"github.com/google/syzkaller/pkg/flatrpc"
"github.com/google/syzkaller/pkg/fuzzer/queue"
+ "github.com/google/syzkaller/pkg/manager"
"github.com/google/syzkaller/prog"
"github.com/google/syzkaller/sys/targets"
)
@@ -310,7 +311,7 @@ func parseProg(target *prog.Target, dir, filename string, requires map[string]bo
if !checkArch(properties, target.Arch) || !match(properties, requires) {
return nil, nil, nil, nil
}
- p, err := target.Deserialize(data, prog.Strict)
+ p, err := manager.ParseSeedStrict(target, data)
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to deserialize %v: %w", filename, err)
}