diff options
Diffstat (limited to 'pkg/corpus/corpus.go')
| -rw-r--r-- | pkg/corpus/corpus.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/pkg/corpus/corpus.go b/pkg/corpus/corpus.go index e6569dbc6..d57b5fd25 100644 --- a/pkg/corpus/corpus.go +++ b/pkg/corpus/corpus.go @@ -98,6 +98,7 @@ type Item struct { Call int Prog *prog.Prog HasAny bool // whether the prog contains squashed arguments + ExecLast int64 Signal signal.Signal StableSignal signal.Signal Cover []uint64 @@ -106,6 +107,8 @@ type Item struct { areas map[*focusAreaState]struct{} } +const maxExecs int64 = 5 + func (item Item) StringCall() string { return item.Prog.CallName(item.Call) } @@ -155,6 +158,7 @@ func (corpus *Corpus) Save(inp NewInput) { Prog: old.Prog, Call: old.Call, HasAny: old.HasAny, + ExecLast: old.ExecLast, Signal: newSignal, StableSignal: newStableSignal, Cover: newCover.Serialize(), @@ -171,6 +175,7 @@ func (corpus *Corpus) Save(inp NewInput) { Call: inp.Call, Prog: inp.Prog, HasAny: inp.Prog.ContainsAny(), + ExecLast: maxExecs, Signal: inp.Signal, StableSignal: inp.StableSignal, Cover: inp.Cover, @@ -181,6 +186,8 @@ func (corpus *Corpus) Save(inp NewInput) { corpus.progsMap[sig] = newItem corpus.applyFocusAreas(newItem, newItem.Cover) corpus.saveProgram(inp.Prog, newItem.StableSignal) + corpus.modifyPriority(inp.Prog, newItem.Signal, newItem.ExecLast) + // TODO do same thing with Focus Areas corpus.signal.Merge(inp.Signal) newCover := corpus.cover.MergeDiff(inp.Cover) |
