From c464ac231f1222f8f4c808d8f0d27ea8d3cacec5 Mon Sep 17 00:00:00 2001 From: WorksButNotTested <62701594+WorksButNotTested@users.noreply.github.com> Date: Fri, 26 Sep 2025 16:34:44 +0000 Subject: [PATCH] Fix asan issue with transmuting invalid syscall number --- crates/libafl_asan/Justfile | 2 +- crates/libafl_asan/src/host/linux.rs | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/crates/libafl_asan/Justfile b/crates/libafl_asan/Justfile index 0be201b2d83..26d079bc378 100644 --- a/crates/libafl_asan/Justfile +++ b/crates/libafl_asan/Justfile @@ -47,7 +47,7 @@ test: test_asan pretty_rust: #!/bin/sh - MAIN_LLVM_VERSION=$LLVM_VERSION cargo run --manifest-path ../utils/libafl_repo_tools/Cargo.toml --release -- -v + MAIN_LLVM_VERSION=$LLVM_VERSION cargo run --manifest-path ../../utils/libafl_repo_tools/Cargo.toml --release -- -v pretty_toml: #!/bin/sh diff --git a/crates/libafl_asan/src/host/linux.rs b/crates/libafl_asan/src/host/linux.rs index 8859a103044..b35f614021e 100644 --- a/crates/libafl_asan/src/host/linux.rs +++ b/crates/libafl_asan/src/host/linux.rs @@ -1,7 +1,6 @@ //! # linux //! The `LinuxHost` supports the established means of interacting with the QEMU //! emulator on Linux by means of issuing a bespoke syscall. -use core::mem::transmute; use syscalls::{Errno, Sysno, syscall2, syscall3, syscall4}; @@ -83,6 +82,9 @@ impl LinuxHost { const SYSCALL_NO: u32 = 0xa2a4; pub fn sysno() -> Sysno { - unsafe { transmute(Self::SYSCALL_NO) } + let mut ret = Sysno::read; + let ptr = &mut ret as *mut Sysno as *mut u32; + unsafe { *ptr = Self::SYSCALL_NO }; + ret } }