diff --git a/.github/workflows/log4cxx-ubuntu.yml b/.github/workflows/log4cxx-ubuntu.yml index d38dd3ef6..ac0f08ad4 100644 --- a/.github/workflows/log4cxx-ubuntu.yml +++ b/.github/workflows/log4cxx-ubuntu.yml @@ -36,6 +36,7 @@ jobs: multithread: OFF exitevents: OFF fuzzers: OFF + logchar: utf-8 - name: ubuntu20-clang os: ubuntu-20.04 cxx: clang++ @@ -46,6 +47,7 @@ jobs: multithread: OFF exitevents: OFF fuzzers: ON + logchar: utf-8 - name: ubuntu22-gcc os: ubuntu-22.04 cxx: g++ @@ -56,6 +58,7 @@ jobs: multithread: ON exitevents: ON fuzzers: OFF + logchar: utf-8 - name: ubuntu22-clang os: ubuntu-22.04 cxx: clang++ @@ -66,6 +69,7 @@ jobs: multithread: ON exitevents: OFF fuzzers: ON + logchar: wchar_t steps: - uses: actions/checkout@v4 @@ -103,6 +107,7 @@ jobs: -DLOG4CXX_MULTIPROCESS_ROLLING_FILE_APPENDER=${{ matrix.multiprocess }} \ -DLOG4CXX_EVENTS_AT_EXIT=${{ matrix.exitevents }} \ -DBUILD_FUZZERS=${{ matrix.fuzzers }} \ + -DLOG4CXX_CHAR=${{ matrix.logchar }} \ .. cmake --build . diff --git a/src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp b/src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp index df7562a74..a1d92b919 100644 --- a/src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp +++ b/src/fuzzers/cpp/TimeBasedRollingPolicyFuzzer.cpp @@ -47,7 +47,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { } else { tbrp->setFileNamePattern(LogString(LOG4CXX_STR("fuzz-%d{" DATE_PATTERN "}.zip"))); } - rfa->setFile(LOG4CXX_STR(LOG4CXX_STR("test.log"))); + rfa->setFile(LOG4CXX_STR("test.log")); tbrp->activateOptions(pool); rfa->setRollingPolicy(tbrp); diff --git a/src/main/cpp/syslogappender.cpp b/src/main/cpp/syslogappender.cpp index 3a5a0e2b8..77540b6f7 100644 --- a/src/main/cpp/syslogappender.cpp +++ b/src/main/cpp/syslogappender.cpp @@ -334,8 +334,9 @@ void SyslogAppender::append(const spi::LoggingEventPtr& event, Pool& p) for (auto const& item : packets) { // use of "%s" to avoid a security hole + LOG4CXX_ENCODE_CHAR(itemStr, item); ::syslog(_priv->syslogFacility | event->getLevel()->getSyslogEquivalent(), - "%s", item.c_str()); + "%s", itemStr.c_str()); } return;