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.
This commit is contained in:
scawful
2025-09-27 22:35:27 -04:00
parent 3040302247
commit f76fe312fb

View File

@@ -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<size_t>(maxValueNameSize) + 1, size_t(1024));
const size_t maxDataSize = (std::min)(static_cast<size_t>(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<char> valueName(maxNameSize);
std::vector<BYTE> 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<DWORD>(maxNameSize);