diff options
author | Andrei Lebedev <lebdron@gmail.com> | 2020-11-02 00:09:36 +0100 |
---|---|---|
committer | Vitaly Buka <vitalybuka@gmail.com> | 2020-11-05 17:58:57 -0800 |
commit | 51308795413a0535843e599edc7ab418e7e25d7e (patch) | |
tree | 80850275b37440efd9a322b6f85a010e0faab257 | |
parent | 8372739ac3643bb0562dfa55ae307185449e80b8 (diff) | |
download | libprotobuf-mutator-51308795413a0535843e599edc7ab418e7e25d7e.tar.gz |
Refactor unary minus for unsigned type in MutateString
Signed-off-by: Andrei Lebedev <lebdron@gmail.com>
-rw-r--r-- | src/libfuzzer/libfuzzer_mutator.cc | 8 |
1 files changed, 6 insertions, 2 deletions
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<uint16_t>(0, 20)(*random())) return {}; std::string result = value; - result.resize(value.size() + - std::max<int>(-value.size(), size_increase_hint)); + std::string::size_type new_size = 0; + if (size_increase_hint >= 0 || static_cast<std::string::size_type>( + -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<uint8_t*>(&result[0]), value.size(), result.size())); |