MCPcopy Create free account
hub / github.com/MultiFuzz/MultiFuzz / MultiStreamExtendStage

Class MultiStreamExtendStage

hail-fuzz/src/extension.rs:15–50  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13};
14
15pub(crate) struct MultiStreamExtendStage {
16 /// The different addresses that the program has finished executing at, used for discovering
17 /// new inputs for further mutations.
18 end_addrs: HashSet<u64>,
19
20 /// The rarest ending address seen for the current input.
21 rare_input: Option<(u64, MultiStream)>,
22
23 /// Inputs that we found that end with new mmio address.
24 new_starting_inputs: VecDeque<(u32, MultiStream)>,
25
26 /// The input we are extending.
27 current_input: MultiStream,
28
29 /// The number of inputs that we fuzzed in order to reach `current_input`.
30 local_depth: u32,
31
32 /// The maximum number of extensions to apply per stream.
33 log2_max_extensions: u32,
34
35 /// The set of streams that have been observed to be read after `current_input`
36 streams_to_mutate: HashMap<StreamKey, f64>,
37
38 /// Data used for input-to-state random replacement.
39 i2s_data: Option<i2s::I2SRandomReplacement>,
40
41 /// The number of remaining attempts when to try i2s random replacement for.
42 i2s_replacement_attempts: i32,
43
44 /// The amount of energy assigned to this input.
45 energy: usize,
46
47 /// The remaining attempts to try for the current input.
48 attempts: usize,
49 extension_limit: usize,
50}
51
52impl MultiStreamExtendStage {
53 fn start(fuzzer: &mut Fuzzer) -> Result<Self, StageExit> {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected