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

Method exec_one

hail-fuzz/src/extension.rs:109–135  ·  view source on GitHub ↗
(&mut self, fuzzer: &mut Fuzzer)

Source from the content-addressed store, hash-verified

107 }
108
109 fn exec_one(&mut self, fuzzer: &mut Fuzzer) -> Option<VmExit> {
110 Snapshot::restore_prefix(fuzzer);
111 fuzzer.state.input.clone_from(&self.current_input);
112
113 match self.i2s_data.as_mut() {
114 Some(data) => {
115 fuzzer.stage = Stage::MultiStreamExtendI2S;
116 Snapshot::restore_initial(fuzzer);
117 fuzzer.state.input.seek_to_start();
118 let _ = data.random_replace(fuzzer);
119 match self.i2s_replacement_attempts.checked_sub(1) {
120 Some(new) => self.i2s_replacement_attempts = new,
121 None => self.i2s_data = None,
122 }
123 }
124 None => {
125 fuzzer.stage = Stage::MultiStreamExtend;
126 self.extend_current_input(fuzzer)
127 }
128 }
129
130 fuzzer.write_input_to_target().unwrap();
131 let exit = fuzzer.execute()?;
132 fuzzer.auto_trim_input().ok()?;
133
134 Some(exit)
135 }
136
137 fn extend_current_input(&mut self, fuzzer: &mut Fuzzer) {
138 let num_extensions = crate::utils::rand_pow2(&mut fuzzer.rng, self.log2_max_extensions);

Callers 1

runMethod · 0.80

Calls 7

clone_fromMethod · 0.80
seek_to_startMethod · 0.80
random_replaceMethod · 0.80
extend_current_inputMethod · 0.80
write_input_to_targetMethod · 0.80
executeMethod · 0.80
auto_trim_inputMethod · 0.80

Tested by

no test coverage detected