diff --git a/libafl/src/mutators/multi.rs b/libafl/src/mutators/multi.rs index c74daf1712..866629ae48 100644 --- a/libafl/src/mutators/multi.rs +++ b/libafl/src/mutators/multi.rs @@ -153,6 +153,9 @@ where .map(|(idx, part)| (idx, part.bytes().len())); if let Some((part_idx, size)) = maybe_size { + if size == 0 { // Workaround for a bug where parts are empty. The origin remains unknown. + return Ok(MutationResult::Skipped); + } let target = state.rand_mut().below(size); let range = rand_range(state, other_size, min(other_size, size - target)); @@ -195,6 +198,9 @@ where drop(other_testcase); let size = part.bytes().len(); + if size == 0 { // Workaround for a bug where parts are empty. The origin remains unknown. + return Ok(MutationResult::Skipped); + } let target = state.rand_mut().below(size); let range = rand_range(state, other_size, min(other_size, size - target)); @@ -257,6 +263,9 @@ where .map(|(idx, part)| (idx, part.bytes().len())); if let Some((part_idx, size)) = maybe_size { + if size == 0 { // Workaround for a bug where parts are empty. The origin remains unknown. + return Ok(MutationResult::Skipped); + } let target = state.rand_mut().below(size); let range = rand_range(state, other_size, min(other_size, size - target));