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

Function register_write_printer

hail-fuzz/src/debugging/check.rs:579–593  ·  view source on GitHub ↗
(vm: &mut Vm, addr: u64, data_reg: &str, len_reg: &str)

Source from the content-addressed store, hash-verified

577}
578
579fn register_write_printer(vm: &mut Vm, addr: u64, data_reg: &str, len_reg: &str) {
580 tracing::debug!("registering `write(data={data_reg}, len={len_reg})` hook at {addr:#x}");
581 let data = vm.cpu.arch.sleigh.get_varnode(data_reg).unwrap();
582 let len = vm.cpu.arch.sleigh.get_varnode(len_reg).unwrap();
583
584 let mut buf = vec![];
585 vm.hook_address(addr, move |cpu: &mut icicle_vm::cpu::Cpu, _| {
586 let ptr = cpu.read_var::<u32>(data);
587 let len = cpu.read_var::<u32>(len);
588 buf.resize((len as usize).min(64), 0);
589 let _ = cpu.mem.read_bytes(ptr as u64, &mut buf, perm::NONE);
590 print!("{}", buf.as_bstr());
591 let _ = std::io::stdout().flush();
592 });
593}

Callers 6

initFunction · 0.85
debug_zephyr_socket_canFunction · 0.85
debug_usbFunction · 0.85
debug_utasker_modbusFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected