From e8de3591bfd2c2c0a8503a4f68b187ccc7290875 Mon Sep 17 00:00:00 2001 From: Romain Malmain Date: Tue, 16 Jul 2024 00:37:54 +0200 Subject: [PATCH] Fix cfg clippy for libafl_qemu (#2397) * optional final comma * fix systemmode --- fuzzers/qemu_systemmode/build.rs | 2 +- libafl_concolic/symcc_runtime/src/lib.rs | 2 +- libafl_qemu/Cargo.toml | 5 ++++- libafl_qemu/src/executor/mod.rs | 2 +- libafl_qemu/src/qemu/mod.rs | 4 ++++ 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/fuzzers/qemu_systemmode/build.rs b/fuzzers/qemu_systemmode/build.rs index 9f7f8443ac..a6f4f86bf4 100644 --- a/fuzzers/qemu_systemmode/build.rs +++ b/fuzzers/qemu_systemmode/build.rs @@ -5,7 +5,7 @@ macro_rules! assert_unique_feature { () => {}; ($first:tt $(,$rest:tt)*) => { $( - #[cfg(all(not(any(doc, feature = "clippy")), feature = $first, feature = $rest))] + #[cfg(all(not(doc), feature = $first, feature = $rest))] compile_error!(concat!("features \"", $first, "\" and \"", $rest, "\" cannot be used together")); )* assert_unique_feature!($($rest),*); diff --git a/libafl_concolic/symcc_runtime/src/lib.rs b/libafl_concolic/symcc_runtime/src/lib.rs index f5baf640da..13b5ee85e9 100644 --- a/libafl_concolic/symcc_runtime/src/lib.rs +++ b/libafl_concolic/symcc_runtime/src/lib.rs @@ -164,7 +164,7 @@ macro_rules! export_rust_runtime_fn { // special case for build_integer_from_buffer cuz the next one just doesn't work!!!!!!! (pub fn build_integer_from_buffer( buffer: *mut ::std::os::raw::c_void, - num_bits: ::std::os::raw::c_uint,) -> RSymExpr,$c_name:ident; $rt_cb:path) => { + num_bits: ::std::os::raw::c_uint$(,)?) -> RSymExpr,$c_name:ident; $rt_cb:path) => { #[allow(clippy::missing_safety_doc)] #[no_mangle] pub unsafe extern "C" fn _rsym_build_integer_from_buffer(buffer: *mut ::std::os::raw::c_void, num_bits: ::std::os::raw::c_uint) { diff --git a/libafl_qemu/Cargo.toml b/libafl_qemu/Cargo.toml index a3d24c0bbe..a67ca30111 100644 --- a/libafl_qemu/Cargo.toml +++ b/libafl_qemu/Cargo.toml @@ -17,7 +17,6 @@ rustdoc-args = ["--cfg", "docsrs"] [features] default = ["fork", "build_libgasan", "build_libqasan", "serdeany_autoreg", "injections"] -clippy = [] # special feature for clippy, don't use in normal projects§ document-features = ["dep:document-features"] paranoid_debug = ["libafl_qemu_sys/paranoid_debug"] # Will perform as many checks as possible. The target will be greatly slowed down. @@ -62,6 +61,10 @@ slirp = [ "systemmode", "libafl_qemu_sys/slirp" ] # build qemu with host libslir # Requires the binary's build.rs to call `build_libafl_qemu` shared = [ "libafl_qemu_sys/shared" ] +#! ## Internal features, don't use in normal projects +## clippy workaround +clippy = ["libafl_qemu_sys/clippy"] + [dependencies] libafl = { path = "../libafl", version = "0.13.1", default-features = false, features = ["std", "derive", "regex"] } libafl_bolts = { path = "../libafl_bolts", version = "0.13.1", default-features = false, features = ["std", "derive"] } diff --git a/libafl_qemu/src/executor/mod.rs b/libafl_qemu/src/executor/mod.rs index b172bc8731..ffaf8baad6 100644 --- a/libafl_qemu/src/executor/mod.rs +++ b/libafl_qemu/src/executor/mod.rs @@ -118,7 +118,7 @@ pub unsafe fn inproc_qemu_timeout_handler<'a, E, EM, OF, Z>( EM: EventFirer + EventRestarter, OF: Feedback, E::State: HasSolutions + HasCorpus + HasExecutions, - Z: HasObjective, + Z: HasObjective + ExecutionProcessor + HasScheduler, { if BREAK_ON_TMOUT { qemu_system_debug_request(); diff --git a/libafl_qemu/src/qemu/mod.rs b/libafl_qemu/src/qemu/mod.rs index 7e338aad57..8b516302c2 100644 --- a/libafl_qemu/src/qemu/mod.rs +++ b/libafl_qemu/src/qemu/mod.rs @@ -82,8 +82,12 @@ create_hook_id!(Block, libafl_qemu_remove_block_hook, true); create_hook_id!(Read, libafl_qemu_remove_read_hook, true); create_hook_id!(Write, libafl_qemu_remove_write_hook, true); create_hook_id!(Cmp, libafl_qemu_remove_cmp_hook, true); + +#[cfg(emulation_mode = "usermode")] create_hook_id!(PreSyscall, libafl_qemu_remove_pre_syscall_hook, false); +#[cfg(emulation_mode = "usermode")] create_hook_id!(PostSyscall, libafl_qemu_remove_post_syscall_hook, false); +#[cfg(emulation_mode = "usermode")] create_hook_id!(NewThread, libafl_qemu_remove_new_thread_hook, false); #[derive(Debug)]