From 9190d183c2d43cd404d16ebc007d32f9ba6fdd0f Mon Sep 17 00:00:00 2001 From: Jackburton79 Date: Fri, 6 Dec 2024 17:49:44 +0100 Subject: [PATCH] Sanitize log_size before using it. For some reason log_size became a huge value (probably a pointer?) in my settings. Better sanitize it to sane values before using that value. Fixes a crash while loading settings. --- src/helpers/Logger.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/helpers/Logger.cpp b/src/helpers/Logger.cpp index ec64f436..19509571 100644 --- a/src/helpers/Logger.cpp +++ b/src/helpers/Logger.cpp @@ -31,7 +31,13 @@ Logger::SetDestination(int destination) void Logger::LogFormat(const char* fmtString, ...) { - const int32 logArraySize = (int32)gCFG["log_size"]; + int32 logArraySize = (int32)gCFG["log_size"]; + // Sanitize + if (logArraySize < 1024) + logArraySize = 1024; + else if (logArraySize > 4096) + logArraySize = 4096; + #if __clang__ char* logString = new char[logArraySize]; #else @@ -52,7 +58,12 @@ Logger::LogFormat(const char* fmtString, ...) void Logger::LogFormat(log_level level, const char* fmtString, ...) { - const int32 logArraySize = (int32)gCFG["log_size"]; + int32 logArraySize = (int32)gCFG["log_size"]; + // Sanitize + if (logArraySize < 1024) + logArraySize = 1024; + else if (logArraySize > 4096) + logArraySize = 4096; // Prepend the log level #if __clang__