Expand description

The feedbacks reduce observer state after each run to a single is_interesting-value. If a testcase is interesting, it may be added to a Corpus.

Re-exports

pub use differential::DiffFeedback;
pub use concolic::ConcolicFeedback;
pub use new_hash_feedback::NewHashFeedback;
pub use new_hash_feedback::NewHashFeedbackMetadata;
pub use map::*;

Modules

Concolic feedback for concolic fuzzing. It is used to attach concolic tracing metadata to the testcase. This feedback should be used in combination with another feedback as this feedback always considers testcases to be not interesting. Requires a ConcolicObserver to observe the concolic trace.

Diff Feedback, comparing the content of two observers of the same type.

Map feedback, maximizing or minimizing maps, for example the afl-style map observer.

The NewHashFeedback uses the backtrace hash and a hashset to only keep novel cases

Structs

A combined feedback consisting of multiple Feedbacks

A CrashFeedback reports as interesting if the target crashed.

Consider interesting a testcase if the list in ListObserver is not empty.

Eager AND combination of two feedbacks

Eager OR combination of two feedbacks

Fast AND combination of two feedbacks

Fast OR combination of two feedbacks

Compose feedbacks with an NOT operation

Nop feedback that annotates execution time in the new testcase, if any for this Feedback, the testcase is never interesting (use with an OR). It decides, if the given TimeObserver value of a run is interesting.

A TimeoutFeedback reduces the timeout value of a run.

Enums

The ConstFeedback reports the same value, always. It can be used to enable or disable feedback results through composition.

Traits

Feedbacks evaluate the observers. Basically, they reduce the information provided by an observer to a value, indicating the “interestingness” of the last run.

Logical combination of two feedbacks

Has an associated observer name (mostly used to retrieve the observer with MatchName from an ObserverTuple)

Type Definitions

Combine two feedbacks with an eager AND operation, will call all feedbacks functions even if not necessary to conclude the result

Combine two feedbacks with an eager OR operation, will call all feedbacks functions even if not necessary to conclude the result

Combine two feedbacks with an fast AND operation, might skip calling feedbacks functions if not necessary to conclude the result

Combine two feedbacks with an fast OR operation, might skip calling feedbacks functions if not necessary to conclude the result. This means any feedback that is not first might be skipped, use caution when using with TimeFeedback