From fa2f7d005932bff9b7d27744ae517b9e7910df8d Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Wed, 9 Feb 2022 14:38:56 +0100 Subject: [PATCH] fuzz: Avoid unsigned integer overflow in FormatParagraph --- src/test/fuzz/string.cpp | 3 ++- src/util/strencodings.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/fuzz/string.cpp b/src/test/fuzz/string.cpp index 8f071b71feb..ca57af25c49 100644 --- a/src/test/fuzz/string.cpp +++ b/src/test/fuzz/string.cpp @@ -145,7 +145,8 @@ FUZZ_TARGET(string) (void)CopyrightHolders(random_string_1); FeeEstimateMode fee_estimate_mode; (void)FeeModeFromString(random_string_1, fee_estimate_mode); - (void)FormatParagraph(random_string_1, fuzzed_data_provider.ConsumeIntegralInRange(0, 1000), fuzzed_data_provider.ConsumeIntegralInRange(0, 1000)); + const auto width{fuzzed_data_provider.ConsumeIntegralInRange(1, 1000)}; + (void)FormatParagraph(random_string_1, width, fuzzed_data_provider.ConsumeIntegralInRange(0, width)); (void)FormatSubVersion(random_string_1, fuzzed_data_provider.ConsumeIntegral(), random_string_vector); (void)GetDescriptorChecksum(random_string_1); (void)HelpExampleCli(random_string_1, random_string_2); diff --git a/src/util/strencodings.cpp b/src/util/strencodings.cpp index a386f2b7b3b..e0f0d63ff64 100644 --- a/src/util/strencodings.cpp +++ b/src/util/strencodings.cpp @@ -328,6 +328,7 @@ bool ParseUInt64(const std::string& str, uint64_t* out) std::string FormatParagraph(const std::string& in, size_t width, size_t indent) { + assert(width >= indent); std::stringstream out; size_t ptr = 0; size_t indented = 0;