Feedbacks
A Feedback
is a
trait implemented by an object that takes as input the state of an
Observer
and
determines, after each fuzzing iteration, whether the state of the observer is
interesting. This interestingness determination is entirely up to the implementer,
although many common cases are implemented by default.
For example, the
AflMapFeedback
implements the interestingness determination used by AFL and AFL++ given the state of a
HitcountsMapObserver
.
The interestingness determination from each feedback is used to determine whether a
testcase should be kept, and further mutated, or discarded. The
AflMapFeedback
keeps testcases that exercise any new control flow, whether that is exploring a
previously unexplored edge in the CFG or exploring an explored edge a previously un-seen
number of times (for example, an additional loop iteration).