From aa69436b6450dbc4fc066cfc509d4c54a0265dda Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Mon, 20 Nov 2023 13:53:29 +0100 Subject: [PATCH] Fix i386 QEMU read_function_argument() (#1677) --- libafl_qemu/src/i386.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libafl_qemu/src/i386.rs b/libafl_qemu/src/i386.rs index dc4a7bbfd1..811dd302aa 100644 --- a/libafl_qemu/src/i386.rs +++ b/libafl_qemu/src/i386.rs @@ -80,7 +80,6 @@ impl crate::ArchExtras for crate::CPU { match idx { 0..=1 => { - let val: GuestReg = val.into(); let stack_ptr: GuestAddr = self.read_reg(Regs::Sp)?; /* * Stack is full and descending. SP points to return address, arguments @@ -89,10 +88,11 @@ impl crate::ArchExtras for crate::CPU { let size: GuestAddr = size_of::() as GuestAddr; let offset = size * (idx as GuestAddr + 1); - let val = unsafe { - self.read_mem(stack_ptr + offset, size_of::()); - }; - Ok(GuestReg::from_le_bytes(val)) + let mut val = [0u8; size_of::()]; + unsafe { + self.read_mem(stack_ptr + offset, &mut val); + } + Ok(GuestReg::from_le_bytes(val).into()) } _ => Err(format!("Unsupported argument: {idx:}")), }