From f14d486ccfdecbfc7e81cd608cfbf61d298ab3a8 Mon Sep 17 00:00:00 2001 From: Alwin Berger Date: Fri, 23 Aug 2024 12:28:00 +0200 Subject: [PATCH] skip mutation of 0 size inputs --- libafl/src/mutators/multi.rs | 9 +++++++++ 1 file changed, 9 insertions(+) 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));