From 9ff76b88719a4620c640b7c55bd1faa069c99d10 Mon Sep 17 00:00:00 2001 From: ChthonVII Date: Wed, 23 Jun 2021 11:40:53 +0900 Subject: [PATCH] fix off-by-1 crash bug in sidebar as per https://github.com/electronicarts/CnC_Remastered_Collection/issues/105 --- REDALERT/SIDEBAR.CPP | 5 +++-- REDALERT/SIDEBARGlyphx.CPP | 5 +++-- TIBERIANDAWN/SIDEBAR.CPP | 3 ++- TIBERIANDAWN/SIDEBARGlyphx.CPP | 5 +++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/REDALERT/SIDEBAR.CPP b/REDALERT/SIDEBAR.CPP index 21b8d5fc1..b9f569fad 100644 --- a/REDALERT/SIDEBAR.CPP +++ b/REDALERT/SIDEBAR.CPP @@ -1408,7 +1408,8 @@ void SidebarClass::StripClass::Deactivate(void) *=============================================================================================*/ bool SidebarClass::StripClass::Add(RTTIType type, int id, bool via_capture) { - if (BuildableCount <= MAX_BUILDABLES) { + // Chthon CFE Note: bugfix as per https://github.com/electronicarts/CnC_Remastered_Collection/issues/105 + if (BuildableCount < MAX_BUILDABLES) { for (int index = 0; index < BuildableCount; index++) { if (Buildables[index].BuildableType == type && Buildables[index].BuildableID == id) { return(false); @@ -2475,4 +2476,4 @@ void SidebarClass::Zoom_Mode_Control(void) } } #endif -} \ No newline at end of file +} diff --git a/REDALERT/SIDEBARGlyphx.CPP b/REDALERT/SIDEBARGlyphx.CPP index 8208838fa..a3aa38ba6 100644 --- a/REDALERT/SIDEBARGlyphx.CPP +++ b/REDALERT/SIDEBARGlyphx.CPP @@ -358,7 +358,8 @@ void SidebarGlyphxClass::StripClass::Init_Clear(void) *=============================================================================================*/ bool SidebarGlyphxClass::StripClass::Add(RTTIType type, int id, bool via_capture) { - if (BuildableCount <= MAX_BUILDABLES) { + // Chthon CFE Note: bugfix as per https://github.com/electronicarts/CnC_Remastered_Collection/issues/105 + if (BuildableCount < MAX_BUILDABLES) { for (int index = 0; index < BuildableCount; index++) { if (Buildables[index].BuildableType == type && Buildables[index].BuildableID == id) { return(false); @@ -818,4 +819,4 @@ void Sidebar_Glyphx_Decode_Pointers(SidebarGlyphxClass *sidebar) if (sidebar) { sidebar->Decode_Pointers(); } -} \ No newline at end of file +} diff --git a/TIBERIANDAWN/SIDEBAR.CPP b/TIBERIANDAWN/SIDEBAR.CPP index 2f718f2a4..888f9461e 100644 --- a/TIBERIANDAWN/SIDEBAR.CPP +++ b/TIBERIANDAWN/SIDEBAR.CPP @@ -1437,7 +1437,8 @@ static int sortfunc(void const * ptr1, void const * ptr2) *=============================================================================================*/ bool SidebarClass::StripClass::Add(RTTIType type, int id, bool via_capture) { - if (BuildableCount <= MAX_BUILDABLES) { + // Chthon CFE Note: bugfix as per https://github.com/electronicarts/CnC_Remastered_Collection/issues/105 + if (BuildableCount < MAX_BUILDABLES) { for (int index = 0; index < BuildableCount; index++) { if (Buildables[index].BuildableType == type && Buildables[index].BuildableID == id) { return(false); diff --git a/TIBERIANDAWN/SIDEBARGlyphx.CPP b/TIBERIANDAWN/SIDEBARGlyphx.CPP index 0c7e6b366..85d427cd2 100644 --- a/TIBERIANDAWN/SIDEBARGlyphx.CPP +++ b/TIBERIANDAWN/SIDEBARGlyphx.CPP @@ -359,7 +359,8 @@ void SidebarGlyphxClass::StripClass::Init_Clear(void) *=============================================================================================*/ bool SidebarGlyphxClass::StripClass::Add(RTTIType type, int id, bool via_capture) { - if (BuildableCount <= MAX_BUILDABLES) { + // Chthon CFE Note: bugfix as per https://github.com/electronicarts/CnC_Remastered_Collection/issues/105 + if (BuildableCount < MAX_BUILDABLES) { for (int index = 0; index < BuildableCount; index++) { if (Buildables[index].BuildableType == type && Buildables[index].BuildableID == id) { return(false); @@ -830,4 +831,4 @@ void Sidebar_Glyphx_Decode_Pointers(SidebarGlyphxClass *sidebar) sidebar->Decode_Pointers(); } } - \ No newline at end of file +