From 6c02bfefa5ed337e73c311ac6e88738274058b5b Mon Sep 17 00:00:00 2001 From: Langston Barrett Date: Thu, 14 May 2026 10:12:51 -0400 Subject: [PATCH] feat(qemu): Feature for enabling `virtfs` --- crates/libafl_qemu/Cargo.toml | 4 ++++ crates/libafl_qemu/libafl_qemu_build/Cargo.toml | 1 + crates/libafl_qemu/libafl_qemu_build/src/build.rs | 12 ++++++++++-- crates/libafl_qemu/libafl_qemu_sys/Cargo.toml | 4 ++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/crates/libafl_qemu/Cargo.toml b/crates/libafl_qemu/Cargo.toml index 95ae73e3cfe..5db6f32cb21 100644 --- a/crates/libafl_qemu/Cargo.toml +++ b/crates/libafl_qemu/Cargo.toml @@ -99,6 +99,10 @@ slirp = [ "systemmode", "libafl_qemu_sys/slirp", ] # build qemu with host libslirp (for user networking) +virtfs = [ + "systemmode", + "libafl_qemu_sys/virtfs", +] # build qemu with virtfs support (for host directory sharing) intel_pt = ["systemmode", "x86_64", "dep:libafl_intelpt"] intel_pt_export_raw = ["intel_pt", "libafl_intelpt/export_raw"] diff --git a/crates/libafl_qemu/libafl_qemu_build/Cargo.toml b/crates/libafl_qemu/libafl_qemu_build/Cargo.toml index 9ac22184f65..c6a715c173d 100644 --- a/crates/libafl_qemu/libafl_qemu_build/Cargo.toml +++ b/crates/libafl_qemu/libafl_qemu_build/Cargo.toml @@ -26,6 +26,7 @@ all-features = true [features] shared = [] slirp = [] # build qemu with host libslirp (for user networking) +virtfs = [] # build qemu with virtfs support (for host directory sharing) clippy = [] # special feature for clippy, don't use in normal projects§ diff --git a/crates/libafl_qemu/libafl_qemu_build/src/build.rs b/crates/libafl_qemu/libafl_qemu_build/src/build.rs index 687d56f8d8a..d8c4a7ed142 100644 --- a/crates/libafl_qemu/libafl_qemu_build/src/build.rs +++ b/crates/libafl_qemu/libafl_qemu_build/src/build.rs @@ -117,7 +117,11 @@ fn configure_qemu( .arg("--audio-drv-list=") .arg("--disable-af-xdp") .arg("--disable-alsa") - .arg("--disable-attr") + .arg(if cfg!(feature = "virtfs") { + "--enable-attr" + } else { + "--disable-attr" + }) .arg("--disable-auth-pam") .arg("--disable-dbus-display") .arg("--disable-bochs") @@ -207,7 +211,11 @@ fn configure_qemu( .arg("--disable-vhost-user-blk-server") .arg("--disable-vhost-vdpa") .arg("--disable-virglrenderer") - .arg("--disable-virtfs") + .arg(if cfg!(feature = "virtfs") { + "--enable-virtfs" + } else { + "--disable-virtfs" + }) .arg("--disable-vmnet") .arg("--disable-vnc") .arg("--disable-vnc-jpeg") diff --git a/crates/libafl_qemu/libafl_qemu_sys/Cargo.toml b/crates/libafl_qemu/libafl_qemu_sys/Cargo.toml index 6a127a9159b..f9e79ff4a3f 100644 --- a/crates/libafl_qemu/libafl_qemu_sys/Cargo.toml +++ b/crates/libafl_qemu/libafl_qemu_sys/Cargo.toml @@ -50,6 +50,10 @@ slirp = [ "systemmode", "libafl_qemu_build/slirp", ] # build qemu with host libslirp (for user networking) +virtfs = [ + "systemmode", + "libafl_qemu_build/virtfs", +] # build qemu with virtfs support (for host directory sharing) shared = ["libafl_qemu_build/shared"] # special feature for clippy, don't use in normal projects