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); } }