token mutations: avoid a few infallible unwraps (#1919)

This commit is contained in:
Mrmaxmeier 2024-03-07 18:26:59 +01:00 committed by GitHub
parent e48c8c0e23
commit 6747a7dc2f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 32 additions and 36 deletions

View File

@ -413,14 +413,13 @@ where
}
let tokens_len = {
let meta = state.metadata_map().get::<Tokens>();
if meta.is_none() {
let Some(meta) = state.metadata_map().get::<Tokens>() else {
return Ok(MutationResult::Skipped);
};
if meta.tokens().is_empty() {
return Ok(MutationResult::Skipped);
}
if meta.unwrap().tokens().is_empty() {
return Ok(MutationResult::Skipped);
}
meta.unwrap().tokens().len()
meta.tokens().len()
};
let token_idx = state.rand_mut().below(tokens_len as u64) as usize;
@ -478,14 +477,13 @@ where
}
let tokens_len = {
let meta = state.metadata_map().get::<Tokens>();
if meta.is_none() {
let Some(meta) = state.metadata_map().get::<Tokens>() else {
return Ok(MutationResult::Skipped);
};
if meta.tokens().is_empty() {
return Ok(MutationResult::Skipped);
}
if meta.unwrap().tokens().is_empty() {
return Ok(MutationResult::Skipped);
}
meta.unwrap().tokens().len()
meta.tokens().len()
};
let token_idx = state.rand_mut().below(tokens_len as u64) as usize;

View File

@ -314,14 +314,13 @@ where
) -> Result<MutationResult, Error> {
let max_size = state.max_size();
let tokens_len = {
let meta = state.metadata_map().get::<Tokens>();
if meta.is_none() {
let Some(meta) = state.metadata_map().get::<Tokens>() else {
return Ok(MutationResult::Skipped);
};
if meta.tokens().is_empty() {
return Ok(MutationResult::Skipped);
}
if meta.unwrap().tokens().is_empty() {
return Ok(MutationResult::Skipped);
}
meta.unwrap().tokens().len()
meta.tokens().len()
};
let token_idx = state.rand_mut().below(tokens_len as u64) as usize;
@ -386,14 +385,13 @@ where
}
let tokens_len = {
let meta = state.metadata_map().get::<Tokens>();
if meta.is_none() {
let Some(meta) = state.metadata_map().get::<Tokens>() else {
return Ok(MutationResult::Skipped);
};
if meta.tokens().is_empty() {
return Ok(MutationResult::Skipped);
}
if meta.unwrap().tokens().is_empty() {
return Ok(MutationResult::Skipped);
}
meta.unwrap().tokens().len()
meta.tokens().len()
};
let token_idx = state.rand_mut().below(tokens_len as u64) as usize;
@ -451,15 +449,14 @@ where
}
let cmps_len = {
let meta = state.metadata_map().get::<CmpValuesMetadata>();
let Some(meta) = state.metadata_map().get::<CmpValuesMetadata>() else {
return Ok(MutationResult::Skipped);
};
log::trace!("meta: {:x?}", meta);
if meta.is_none() {
if meta.list.is_empty() {
return Ok(MutationResult::Skipped);
}
if meta.unwrap().list.is_empty() {
return Ok(MutationResult::Skipped);
}
meta.unwrap().list.len()
meta.list.len()
};
let idx = state.rand_mut().below(cmps_len as u64) as usize;
@ -1118,17 +1115,18 @@ where
}
let (cmp_len, cmp_meta, taint_meta) = {
let cmp_meta = state.metadata_map().get::<AFLppCmpValuesMetadata>();
let taint_meta = state.metadata_map().get::<TaintMetadata>();
if cmp_meta.is_none() || taint_meta.is_none() {
let (Some(cmp_meta), Some(taint_meta)) = (
state.metadata_map().get::<AFLppCmpValuesMetadata>(),
state.metadata_map().get::<TaintMetadata>(),
) else {
return Ok(vec![]);
}
};
let cmp_len = cmp_meta.unwrap().headers().len();
let cmp_len = cmp_meta.headers().len();
if cmp_len == 0 {
return Ok(vec![]);
}
(cmp_len, cmp_meta.unwrap(), taint_meta.unwrap())
(cmp_len, cmp_meta, taint_meta)
};
// These idxes must saved in this mutator itself!