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

Function save_metadata

hail-fuzz/src/extension.rs:373–392  ·  view source on GitHub ↗
(fuzzer: &mut Fuzzer, state: &MultiStreamExtendStage)

Source from the content-addressed store, hash-verified

371}
372
373fn save_metadata(fuzzer: &mut Fuzzer, state: &MultiStreamExtendStage) {
374 if !fuzzer.debug.save_length_extension_metadata {
375 return;
376 }
377
378 for (addr, _) in &state.streams_to_mutate {
379 let prev_size = state.current_input.streams.get(addr).map_or(0, |x| x.bytes.len());
380 let size = fuzzer.state.input.streams.get(addr).map_or(0, |x| x.bytes.len());
381
382 let diff = size.saturating_sub(prev_size);
383
384 let metadata = fuzzer.corpus.metadata.streams.entry(*addr).or_default();
385 if fuzzer.state.new_coverage {
386 *metadata.successful_extensions.entry(diff).or_default() += 1;
387 }
388 else {
389 *metadata.failed_extensions.entry(diff).or_default() += 1;
390 }
391 }
392}
393
394/// Determine the maximum number of length extensions to apply to try.
395fn log2_max_extensions(fuzzer: &Fuzzer) -> u32 {

Callers 1

runMethod · 0.85

Calls 2

getMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected