diff --git a/libafl/src/executors/forkserver.rs b/libafl/src/executors/forkserver.rs index 3102c775a2..52f7751b9e 100644 --- a/libafl/src/executors/forkserver.rs +++ b/libafl/src/executors/forkserver.rs @@ -614,7 +614,13 @@ impl<'a, SP> ForkserverExecutorBuilder<'a, SP> { } println!("All right - fork server is up."); // If forkserver is responding, we then check if there's any option enabled. - if status & FS_OPT_ENABLED == FS_OPT_ENABLED { + // We'll send 4-bytes message back to the forkserver to tell which features to use + // The forkserver is listening to our response if either shmem fuzzing is enabled or auto dict is enabled + // + if status & FS_OPT_ENABLED == FS_OPT_ENABLED + && (status & FS_OPT_SHDMEM_FUZZ == FS_OPT_SHDMEM_FUZZ + || status & FS_OPT_AUTODICT == FS_OPT_AUTODICT) + { let mut send_status = FS_OPT_ENABLED; if (status & FS_OPT_SHDMEM_FUZZ == FS_OPT_SHDMEM_FUZZ) && map.is_some() {