Skip to content

Commit 5005ed3

Browse files
Maullerhelmutbuhler
authored andcommitted
[GEN][ZH] Fix uninitialized memory read in DockUpdate::loadDockPositions() (#731)
Co-authored-by: Helmut Buhler <buhler@8gadgetpack.net>
1 parent 898fab5 commit 5005ed3

File tree

2 files changed

+6
-2
lines changed
  • Generals/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate
  • GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate

2 files changed

+6
-2
lines changed

Generals/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,9 @@ void DockUpdate::loadDockPositions()
501501
if( m_numberApproachPositions != DYNAMIC_APPROACH_VECTOR_FLAG )
502502
{
503503
// Dynamic means no bones
504-
Coord3D approachBones[DEFAULT_APPROACH_VECTOR_SIZE];
504+
// TheSuperHackers @fix helmutbuhler 19/04/2025 Zero initialize array to prevent uninitialized memory reads.
505+
// Important: the entire target vector is used for serialization and crc and must not contain random data.
506+
Coord3D approachBones[DEFAULT_APPROACH_VECTOR_SIZE] = {0};
505507
m_numberApproachPositionBones = myDrawable->getPristineBonePositions( "DockWaiting", 1, approachBones, NULL, m_numberApproachPositions);
506508
if( m_numberApproachPositions == m_approachPositions.size() )//safeguard: will always be true
507509
{

GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/DockUpdate/DockUpdate.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,9 @@ void DockUpdate::loadDockPositions()
510510
if( m_numberApproachPositions != DYNAMIC_APPROACH_VECTOR_FLAG )
511511
{
512512
// Dynamic means no bones
513-
Coord3D approachBones[DEFAULT_APPROACH_VECTOR_SIZE];
513+
// TheSuperHackers @fix helmutbuhler 19/04/2025 Zero initialize array to prevent uninitialized memory reads.
514+
// Important: the entire target vector is used for serialization and crc and must not contain random data.
515+
Coord3D approachBones[DEFAULT_APPROACH_VECTOR_SIZE] = {0};
514516
m_numberApproachPositionBones = myDrawable->getPristineBonePositions( "DockWaiting", 1, approachBones, NULL, m_numberApproachPositions);
515517
if( m_numberApproachPositions == m_approachPositions.size() )//safeguard: will always be true
516518
{

0 commit comments

Comments
 (0)