aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/manager/seeds.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/manager/seeds.go')
-rw-r--r--pkg/manager/seeds.go11
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,
}
}