diff --git a/src/libfuzzer/libfuzzer_mutator.cc b/src/libfuzzer/libfuzzer_mutator.cc index c8bca64..dfb86ef 100644 --- a/src/libfuzzer/libfuzzer_mutator.cc +++ b/src/libfuzzer/libfuzzer_mutator.cc @@ -89,8 +89,12 @@ std::string Mutator::MutateString(const std::string& value, // any 8 bit types. if (!std::uniform_int_distribution(0, 20)(*random())) return {}; std::string result = value; - result.resize(value.size() + - std::max(-value.size(), size_increase_hint)); + std::string::size_type new_size = 0; + if (size_increase_hint >= 0 || static_cast( + -size_increase_hint) <= value.size()) { + new_size = value.size() + size_increase_hint; + } + result.resize(new_size); if (result.empty()) result.push_back(0); result.resize(LLVMFuzzerMutate(reinterpret_cast(&result[0]), value.size(), result.size()));