diff --git a/libafl_qemu/src/modules/mod.rs b/libafl_qemu/src/modules/mod.rs index 171a04338a..838c13e247 100644 --- a/libafl_qemu/src/modules/mod.rs +++ b/libafl_qemu/src/modules/mod.rs @@ -92,11 +92,22 @@ where fn address_filter(&self) -> &Self::ModuleAddressFilter; fn address_filter_mut(&mut self) -> &mut Self::ModuleAddressFilter; + fn update_address_filter(&mut self, qemu: Qemu, filter: Self::ModuleAddressFilter) { + *self.address_filter_mut() = filter; + // Necessary because some hooks filter during TB generation. + qemu.flush_jit(); + } #[cfg(emulation_mode = "systemmode")] fn page_filter(&self) -> &Self::ModulePageFilter; #[cfg(emulation_mode = "systemmode")] fn page_filter_mut(&mut self) -> &mut Self::ModulePageFilter; + #[cfg(emulation_mode = "systemmode")] + fn update_page_filter(&mut self, qemu: Qemu, filter: Self::ModulePageFilter) { + *self.page_filter_mut() = filter; + // Necessary because some hooks filter during TB generation. + qemu.flush_jit(); + } } pub trait EmulatorModuleTuple: