This is an automated email from the ASF dual-hosted git repository. swebb2066 pushed a commit to branch prevent_fuzzer_timeouts in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit cb41fbd8f703234798af11b5b8291f5a9ced4583 Author: Stephen Webb <[email protected]> AuthorDate: Sun Aug 30 14:56:30 2026 +1000 Use reasonable fuzzing input data sizes --- src/fuzzers/cpp/HTMLLayoutFuzzer.cpp | 33 ++++++++++++++---------- src/fuzzers/cpp/PatternConverterFuzzer.cpp | 4 +-- src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp | 6 ++++- src/fuzzers/cpp/XMLLayoutFuzzer.cpp | 24 ++++++++++------- 4 files changed, 42 insertions(+), 25 deletions(-) diff --git a/src/fuzzers/cpp/HTMLLayoutFuzzer.cpp b/src/fuzzers/cpp/HTMLLayoutFuzzer.cpp index 4edc6219..8e926dc6 100644 --- a/src/fuzzers/cpp/HTMLLayoutFuzzer.cpp +++ b/src/fuzzers/cpp/HTMLLayoutFuzzer.cpp @@ -28,6 +28,13 @@ using namespace log4cxx; using namespace log4cxx::helpers; using namespace log4cxx::spi; +namespace +{ + const int MaxKeyLength = 50; + const int MaxValueLength = 500; + const int MaxMessageLength = 2000; +} + extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { // Setup HTMLLayout HTMLLayout layout; @@ -41,30 +48,30 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { } // Optional threadinfo if (fdp.ConsumeBool()) { - LOG4CXX_DECODE_CHAR(title, fdp.ConsumeRandomLengthString()); + LOG4CXX_DECODE_CHAR(title, fdp.ConsumeRandomLengthString(MaxValueLength)); layout.setOption(LOG4CXX_STR("TITLE"), title); } // Header if (fdp.ConsumeBool()) { - std::string headerStr = fdp.ConsumeRandomLengthString(); + std::string headerStr = fdp.ConsumeRandomLengthString(MaxValueLength); LogString header; Transcoder::decode(headerStr, header); layout.appendHeader(header, p); } // Create random strings we need later - std::string key1Str = fdp.ConsumeRandomLengthString(); - std::string val1Str = fdp.ConsumeRandomLengthString(); - std::string key2Str = fdp.ConsumeRandomLengthString(); - std::string val2Str = fdp.ConsumeRandomLengthString(); - std::string key3 = fdp.ConsumeRandomLengthString(); - std::string val3 = fdp.ConsumeRandomLengthString(); - std::string key4 = fdp.ConsumeRandomLengthString(); - std::string val4 = fdp.ConsumeRandomLengthString(); - std::string ndcMessage = fdp.ConsumeRandomLengthString(); - std::string loggerStr = fdp.ConsumeRandomLengthString(); - std::string contentStr = fdp.ConsumeRemainingBytesAsString(); + std::string key1Str = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string val1Str = fdp.ConsumeRandomLengthString(MaxValueLength); + std::string key2Str = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string val2Str = fdp.ConsumeRandomLengthString(MaxValueLength); + std::string key3 = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string val3 = fdp.ConsumeRandomLengthString(MaxValueLength); + std::string key4 = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string val4 = fdp.ConsumeRandomLengthString(MaxValueLength); + std::string ndcMessage = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string loggerStr = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string contentStr = fdp.ConsumeRemainingBytesAsString(MaxMessageLength); LogString key1, key2, val1, val2, logger, content; diff --git a/src/fuzzers/cpp/PatternConverterFuzzer.cpp b/src/fuzzers/cpp/PatternConverterFuzzer.cpp index c993c81e..74950d13 100644 --- a/src/fuzzers/cpp/PatternConverterFuzzer.cpp +++ b/src/fuzzers/cpp/PatternConverterFuzzer.cpp @@ -81,8 +81,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { // create strings from "data". FuzzedDataProvider fdp(data, size); - auto loggerStr = fdp.ConsumeRandomLengthString(); - auto contentStr = fdp.ConsumeRandomLengthString(); + auto loggerStr = fdp.ConsumeRandomLengthString(MaximumNameByteCount); + auto contentStr = fdp.ConsumeRandomLengthString(MaximumOptionByteCount); LogString logger, content; Transcoder::decode(loggerStr, logger); diff --git a/src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp b/src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp index ac65a1c6..087d5f14 100644 --- a/src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp +++ b/src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp @@ -28,6 +28,10 @@ using namespace log4cxx; using namespace log4cxx::helpers; using namespace log4cxx::rolling; +namespace +{ + const int MaxMessageLength = 2000; +} // A fuzzer for TimeBasedRollingPolicy extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { @@ -65,7 +69,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { rfa->rollover(pool); } - LOG4CXX_DEBUG(logger, fdp.ConsumeRandomLengthString()); + LOG4CXX_DEBUG(logger, fdp.ConsumeRandomLengthString(MaxMessageLength)); } // Cleanup diff --git a/src/fuzzers/cpp/XMLLayoutFuzzer.cpp b/src/fuzzers/cpp/XMLLayoutFuzzer.cpp index daacc61c..4456bcab 100644 --- a/src/fuzzers/cpp/XMLLayoutFuzzer.cpp +++ b/src/fuzzers/cpp/XMLLayoutFuzzer.cpp @@ -30,6 +30,12 @@ using namespace log4cxx; using namespace log4cxx::helpers; using namespace log4cxx::spi; +namespace +{ + const int MaxKeyLength = 50; + const int MaxValueLength = 500; + const int MaxMessageLength = 2000; +} extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { // Setup XMLLayout @@ -38,15 +44,15 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { // Create random strings FuzzedDataProvider fdp(data, size); - std::string key1 = fdp.ConsumeRandomLengthString(); - std::string val1 = fdp.ConsumeRandomLengthString(); - std::string key2 = fdp.ConsumeRandomLengthString(); - std::string val2 = fdp.ConsumeRandomLengthString(); - std::string ndcMessage = fdp.ConsumeRandomLengthString(); - std::string loggerString = fdp.ConsumeRandomLengthString(); - std::string propkey = fdp.ConsumeRandomLengthString(); - std::string propval = fdp.ConsumeRandomLengthString(); - std::string content = fdp.ConsumeRemainingBytesAsString(); + std::string key1 = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string val1 = fdp.ConsumeRandomLengthString(MaxValueLength); + std::string key2 = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string val2 = fdp.ConsumeRandomLengthString(MaxValueLength); + std::string ndcMessage = fdp.ConsumeRandomLengthString(MaxMessageLength); + std::string loggerString = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string propkey = fdp.ConsumeRandomLengthString(MaxKeyLength); + std::string propval = fdp.ConsumeRandomLengthString(MaxValueLength); + std::string content = fdp.ConsumeRemainingBytesAsString(MaxMessageLength); log4cxx::LevelPtr level = log4cxx::Level::getInfo(); log4cxx::NDC::push(ndcMessage);
