From 00ec7e143cfe41ba5c62d8f94fe44c0a5c0978d5 Mon Sep 17 00:00:00 2001 From: Addison Crump Date: Mon, 23 Jan 2023 15:08:33 +0100 Subject: [PATCH] fix for MapIndexesMetadata (#1008) Co-authored-by: Andrea Fioraldi --- libafl/src/feedbacks/map.rs | 42 +++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/libafl/src/feedbacks/map.rs b/libafl/src/feedbacks/map.rs index e740a56c73..cd0c827456 100644 --- a/libafl/src/feedbacks/map.rs +++ b/libafl/src/feedbacks/map.rs @@ -526,21 +526,22 @@ where let initial = observer.initial(); if interesting { - let len = history_map.len(); - let mut filled = 0; - for i in 0..len { - if history_map[i] != initial { - filled += 1; - if self.indexes.is_some() { - self.indexes.as_mut().unwrap().push(i); - } - } + if let Some(indexes) = self.indexes.as_mut() { + indexes.extend( + observer + .as_iter() + .enumerate() + .filter_map(|(i, &e)| (e != initial).then_some(i)), + ); } + + let len = history_map.len(); + let filled = history_map.iter().filter(|&&i| i != initial).count(); manager.fire( state, Event::UpdateUserStats { name: self.stats_name.to_string(), - value: UserStats::Ratio(filled, len as u64), + value: UserStats::Ratio(filled as u64, len as u64), phantom: PhantomData, }, )?; @@ -700,21 +701,22 @@ where let initial = observer.initial(); if interesting { - let len = history_map.len(); - let mut filled = 0; - for i in 0..len { - if history_map[i] != initial { - filled += 1; - if self.indexes.is_some() { - self.indexes.as_mut().unwrap().push(i); - } - } + if let Some(indexes) = self.indexes.as_mut() { + indexes.extend( + observer + .as_iter() + .enumerate() + .filter_map(|(i, &e)| (e != initial).then_some(i)), + ); } + + let len = history_map.len(); + let filled = history_map.iter().filter(|&&i| i != initial).count(); manager.fire( state, Event::UpdateUserStats { name: self.stats_name.to_string(), - value: UserStats::Ratio(filled, len as u64), + value: UserStats::Ratio(filled as u64, len as u64), phantom: PhantomData, }, )?;