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()