This is an automated email from the ASF dual-hosted git repository.

swebb2066 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git


The following commit(s) were added to refs/heads/master by this push:
     new 0b1d32a7 Use reasonable fuzzing input data sizes (#748)
0b1d32a7 is described below

commit 0b1d32a7558bf95a2caf309091365493b23a286c
Author: Stephen Webb <[email protected]>
AuthorDate: Mon Aug 31 15:59:22 2026 +1000

    Use reasonable fuzzing input data sizes (#748)
---
 src/fuzzers/cpp/HTMLLayoutFuzzer.cpp               | 31 +++++++++++++---------
 src/fuzzers/cpp/PatternConverterFuzzer.cpp         |  4 +--
 src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp   |  6 ++++-
 src/fuzzers/cpp/XMLLayoutFuzzer.cpp                | 22 +++++++++------
 .../rolling/multiprocessrollingfileappender.h      |  1 +
 5 files changed, 41 insertions(+), 23 deletions(-)

diff --git a/src/fuzzers/cpp/HTMLLayoutFuzzer.cpp 
b/src/fuzzers/cpp/HTMLLayoutFuzzer.cpp
index 4edc6219..b35f3829 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,29 +48,29 @@ 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 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();
 
        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..e36595a9 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,14 +44,14 @@ 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 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();
 
        log4cxx::LevelPtr level = log4cxx::Level::getInfo();
diff --git a/src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h 
b/src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h
index f2d7291f..0955d087 100644
--- a/src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h
+++ b/src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h
@@ -51,6 +51,7 @@ class LOG4CXX_EXPORT MultiprocessRollingFileAppender : public 
RollingFileAppende
        public:
                MultiprocessRollingFileAppender();
 
+               using RollingFileAppender::activateOptions;
                /**
                \copybrief FileAppender::activateOptions()
 

Reply via email to