From b3d3c38b2900e45246ea8dd75648f25818226d74 Mon Sep 17 00:00:00 2001 From: Romain Malmain Date: Mon, 18 Nov 2024 19:48:31 +0100 Subject: [PATCH] Fix edge module generators (#2702) * fix generators --- libafl_qemu/src/modules/edges/helpers.rs | 28 ++++++++++-------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/libafl_qemu/src/modules/edges/helpers.rs b/libafl_qemu/src/modules/edges/helpers.rs index 497eca14d6..760fce7272 100644 --- a/libafl_qemu/src/modules/edges/helpers.rs +++ b/libafl_qemu/src/modules/edges/helpers.rs @@ -191,20 +191,18 @@ mod generators { } } - let mask: usize = get_mask::(); + let mask = get_mask::() as u64; - let id = hash_me(src as u64) ^ hash_me(dest as u64); + #[allow(clippy::unnecessary_cast)] + let id = (hash_me(src as u64) ^ hash_me(dest as u64)) & mask; - unsafe { - let nxt = (id as usize + 1) & mask; - - if !IS_CONST_MAP { - *LIBAFL_QEMU_EDGES_MAP_SIZE_PTR = nxt; + if !IS_CONST_MAP { + unsafe { + *LIBAFL_QEMU_EDGES_MAP_SIZE_PTR = + max(*LIBAFL_QEMU_EDGES_MAP_SIZE_PTR, id as usize); } } - // GuestAddress is u32 for 32 bit guests - #[allow(clippy::unnecessary_cast)] Some(id) } else { None @@ -247,15 +245,13 @@ mod generators { } } - let mask: usize = get_mask::(); + let mask = get_mask::() as u64; - let id = hash_me(pc as u64); + let id = hash_me(pc as u64) & mask; - unsafe { - let nxt = (id as usize + 1) & mask; - - if !IS_CONST_MAP { - *LIBAFL_QEMU_EDGES_MAP_SIZE_PTR = nxt; + if !IS_CONST_MAP { + unsafe { + *LIBAFL_QEMU_EDGES_MAP_SIZE_PTR = max(*LIBAFL_QEMU_EDGES_MAP_SIZE_PTR, id as usize); } }