Skip to content

Commit 8840cb8

Browse files
committed
bugfix(debug): Fix memory corruption in DebugCrash() (#1371)
1 parent fef5251 commit 8840cb8

File tree

2 files changed

+8
-6
lines changed
  • GeneralsMD/Code/GameEngine/Source/Common/System
  • Generals/Code/GameEngine/Source/Common/System

2 files changed

+8
-6
lines changed

Generals/Code/GameEngine/Source/Common/System/Debug.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -499,9 +499,10 @@ void DebugCrash(const char *format, ...)
499499
strcat(theCrashBuffer, "ASSERTION FAILURE: ");
500500

501501
va_list arg;
502-
va_start(arg, format);
503-
vsnprintf(theCrashBuffer + strlen(theCrashBuffer), LARGE_BUFFER, format, arg);
504-
va_end(arg);
502+
va_start(arg, format);
503+
size_t offset = strlen(theCrashBuffer);
504+
vsnprintf(theCrashBuffer + offset, ARRAY_SIZE(theCrashBuffer) - offset, format, arg);
505+
va_end(arg);
505506

506507
whackFunnyCharacters(theCrashBuffer);
507508

GeneralsMD/Code/GameEngine/Source/Common/System/Debug.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -500,9 +500,10 @@ void DebugCrash(const char *format, ...)
500500
strcat(theCrashBuffer, "ASSERTION FAILURE: ");
501501

502502
va_list arg;
503-
va_start(arg, format);
504-
vsnprintf(theCrashBuffer + strlen(theCrashBuffer), LARGE_BUFFER, format, arg);
505-
va_end(arg);
503+
va_start(arg, format);
504+
size_t offset = strlen(theCrashBuffer);
505+
vsnprintf(theCrashBuffer + offset, ARRAY_SIZE(theCrashBuffer) - offset, format, arg);
506+
va_end(arg);
506507

507508
whackFunnyCharacters(theCrashBuffer);
508509

0 commit comments

Comments
 (0)