From 7ba77491a9da166457a59254e9decdd63900ca4b Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Sat, 1 Aug 2026 21:51:55 +0200 Subject: [PATCH 1/2] bugfix(shroud): Fix texture access bounds in W3DShroud::getShroudLevel() --- .../GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp index 8af10e2efe2..8576d11691f 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp @@ -264,7 +264,7 @@ W3DShroudLevel W3DShroud::getShroudLevel(Int x, Int y) { DEBUG_ASSERTCRASH( m_pSrcTexture != nullptr, ("Reading empty shroud")); - if (x < m_numCellsX && y < m_numCellsY) + if (x >= 0 && y >= 0 && x < m_numCellsX && y < m_numCellsY) { UnsignedShort pixel=*(UnsignedShort *)((Byte *)m_srcTextureData + x*2 + y*m_srcTexturePitch); From 1ec3bb76cc7b1770e4aeb4e203441d4627455e8c Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Sat, 1 Aug 2026 21:53:22 +0200 Subject: [PATCH 2/2] Replicate in Generals --- .../GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp index e60510a3c8b..a7ff89d9521 100644 --- a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp +++ b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DShroud.cpp @@ -264,7 +264,7 @@ W3DShroudLevel W3DShroud::getShroudLevel(Int x, Int y) { DEBUG_ASSERTCRASH( m_pSrcTexture != nullptr, ("Reading empty shroud")); - if (x < m_numCellsX && y < m_numCellsY) + if (x >= 0 && y >= 0 && x < m_numCellsX && y < m_numCellsY) { UnsignedShort pixel=*(UnsignedShort *)((Byte *)m_srcTextureData + x*2 + y*m_srcTexturePitch);