From fe035c306e6cafbb856a4c2c2c3e5c7c2f9de17a Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Sun, 21 Jan 2024 15:25:00 +0100 Subject: [PATCH] Codechange: prevent out-of-bound read (even if the result is never used) (#11853) --- src/ai/ai_config.cpp | 2 ++ src/ai/ai_gui.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ai/ai_config.cpp b/src/ai/ai_config.cpp index 7493556736..55e9bc0ba1 100644 --- a/src/ai/ai_config.cpp +++ b/src/ai/ai_config.cpp @@ -18,6 +18,8 @@ /* static */ AIConfig *AIConfig::GetConfig(CompanyID company, ScriptSettingSource source) { + assert(company < MAX_COMPANIES); + AIConfig **config; if (source == SSS_FORCE_NEWGAME || (source == SSS_DEFAULT && _game_mode == GM_MENU)) { config = &_settings_newgame.ai_config[company]; diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index c51f0be993..4469974c63 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -289,7 +289,7 @@ struct AIConfigWindow : public Window { if (!gui_scope) return; - AIConfig *config = AIConfig::GetConfig(this->selected_slot); + AIConfig *config = this->selected_slot == INVALID_COMPANY ? nullptr : AIConfig::GetConfig(this->selected_slot); this->SetWidgetDisabledState(WID_AIC_DECREASE_NUMBER, GetGameSettings().difficulty.max_no_competitors == 0); this->SetWidgetDisabledState(WID_AIC_INCREASE_NUMBER, GetGameSettings().difficulty.max_no_competitors == MAX_COMPANIES - 1);