diff options
Diffstat (limited to 'pkg/manager/seeds.go')
| -rw-r--r-- | pkg/manager/seeds.go | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/pkg/manager/seeds.go b/pkg/manager/seeds.go index f17c36ecb..b2a288054 100644 --- a/pkg/manager/seeds.go +++ b/pkg/manager/seeds.go @@ -12,6 +12,7 @@ import ( "os" "path/filepath" "runtime" + "sort" "strings" "sync" "time" @@ -79,8 +80,9 @@ func LoadSeeds(cfg *mgrconfig.Config, immutable bool) (Seeds, error) { flags = fuzzer.ProgMinimized } candidates = append(candidates, fuzzer.Candidate{ - Prog: inp.Prog, - Flags: flags, + Prog: inp.Prog, + Flags: flags, + ProbOnly: inp.Seq == db.SeqProb, }) } if err := <-chErr; err != nil { @@ -101,6 +103,9 @@ func LoadSeeds(cfg *mgrconfig.Config, immutable bool) (Seeds, error) { return Seeds{}, fmt.Errorf("failed to save corpus database: %w", err) } } + sort.SliceStable(candidates, func(i, j int) bool { + return !candidates[i].ProbOnly && candidates[j].ProbOnly + }) // Switch database to the mode when it does not keep records in memory. // We don't need them anymore and they consume lots of memory. info.CorpusDB.DiscardData() @@ -111,6 +116,7 @@ func LoadSeeds(cfg *mgrconfig.Config, immutable bool) (Seeds, error) { type input struct { IsSeed bool Key string + Seq uint64 Path string Data []byte Prog *prog.Prog @@ -138,6 +144,7 @@ func readInputs(cfg *mgrconfig.Config, db *db.DB, output chan *input) error { for key, rec := range db.Records { inputs <- &input{ Key: key, + Seq: rec.Seq, Data: rec.Val, } } |
