From f76fe312fbe45655f07b3255c35907a24ac1042c Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 27 Sep 2025 22:35:27 -0400 Subject: [PATCH] Refactor font loading logic in LoadSystemFonts function - Improved buffer size calculations for font name and data to enhance safety and prevent overflow. - Streamlined the maximum font loading limit to ensure efficient font management while maintaining clarity in the code. --- src/app/core/platform/font_loader.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/app/core/platform/font_loader.cc b/src/app/core/platform/font_loader.cc index cd21db4d..53b01b79 100644 --- a/src/app/core/platform/font_loader.cc +++ b/src/app/core/platform/font_loader.cc @@ -251,14 +251,17 @@ void LoadSystemFonts() { if (result == ERROR_SUCCESS && valueCount > 0) { // Allocate buffers with proper size limits - const size_t maxNameSize = (std::min)(static_cast(maxValueNameSize) + 1, size_t(1024)); - const size_t maxDataSize = (std::min)(static_cast(maxValueDataSize) + 1, size_t(4096)); - + size_t maxNameSize = maxValueNameSize + 1; + if (maxNameSize > 1024) maxNameSize = 1024; + size_t maxDataSize = maxValueDataSize + 1; + if (maxDataSize > 4096) maxDataSize = 4096; + std::vector valueName(maxNameSize); std::vector valueData(maxDataSize); - + // Enumerate font entries (limit to prevent excessive loading) - const DWORD maxFontsToLoad = (std::min)(valueCount, DWORD(50)); + DWORD maxFontsToLoad = valueCount; + if (maxFontsToLoad > 50) maxFontsToLoad = 50; for (DWORD i = 0; i < maxFontsToLoad; i++) { DWORD valueNameSize = static_cast(maxNameSize);