Skip to content

Commit 56381a3

Browse files
committed
pkg/runtest: rely on pkg/manager seed loading logic
It will help us catch broken seeds right in TestParse().
1 parent 25a669a commit 56381a3

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

pkg/manager/seeds.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func LoadSeeds(cfg *mgrconfig.Config, immutable bool) Seeds {
5656
go func() {
5757
defer wg.Done()
5858
for inp := range inputs {
59-
inp.Prog, inp.Err = LoadProg(cfg.Target, inp.Data)
59+
inp.Prog, inp.Err = ParseSeed(cfg.Target, inp.Data)
6060
outputs <- inp
6161
}
6262
}()
@@ -178,13 +178,21 @@ func versionToFlags(version uint64) fuzzer.ProgFlags {
178178
return corpusFlags
179179
}
180180

181-
func LoadProg(target *prog.Target, data []byte) (*prog.Prog, error) {
182-
p, err := target.Deserialize(data, prog.NonStrict)
181+
func ParseSeed(target *prog.Target, data []byte) (*prog.Prog, error) {
182+
return parseProg(target, data, prog.NonStrict)
183+
}
184+
185+
func ParseSeedStrict(target *prog.Target, data []byte) (*prog.Prog, error) {
186+
return parseProg(target, data, prog.Strict)
187+
}
188+
189+
func parseProg(target *prog.Target, data []byte, mode prog.DeserializeMode) (*prog.Prog, error) {
190+
p, err := target.Deserialize(data, mode)
183191
if err != nil {
184192
return nil, err
185193
}
186194
if len(p.Calls) > prog.MaxCalls {
187-
return nil, fmt.Errorf("longer than %d calls", prog.MaxCalls)
195+
return nil, fmt.Errorf("longer than %d calls (%d)", prog.MaxCalls, len(p.Calls))
188196
}
189197
// For some yet unknown reasons, programs with fail_nth > 0 may sneak in. Ignore them.
190198
for _, call := range p.Calls {

pkg/runtest/run.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/google/syzkaller/pkg/csource"
2727
"github.com/google/syzkaller/pkg/flatrpc"
2828
"github.com/google/syzkaller/pkg/fuzzer/queue"
29+
"github.com/google/syzkaller/pkg/manager"
2930
"github.com/google/syzkaller/prog"
3031
"github.com/google/syzkaller/sys/targets"
3132
)
@@ -310,7 +311,7 @@ func parseProg(target *prog.Target, dir, filename string, requires map[string]bo
310311
if !checkArch(properties, target.Arch) || !match(properties, requires) {
311312
return nil, nil, nil, nil
312313
}
313-
p, err := target.Deserialize(data, prog.Strict)
314+
p, err := manager.ParseSeedStrict(target, data)
314315
if err != nil {
315316
return nil, nil, nil, fmt.Errorf("failed to deserialize %v: %w", filename, err)
316317
}

syz-manager/hub.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ func (hc *HubConnector) processRepros(repros [][]byte) int {
313313
}
314314

315315
func (hc *HubConnector) parseProgram(data []byte) (*prog.Prog, error) {
316-
p, err := manager.LoadProg(hc.target, data)
316+
p, err := manager.ParseSeed(hc.target, data)
317317
if err != nil {
318318
return nil, err
319319
}

0 commit comments

Comments
 (0)