Merge pull request #10411 from AdmiralCurtiss/config-disallow-global-ini

Core/BaseConfigLoader: Disallow loading the MAIN_MEMORY_CARD_SIZE from the global config INI.
This commit is contained in:
Admiral H. Curtiss 2022-01-30 00:36:17 +01:00 committed by GitHub
commit a4122237eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 0 deletions

View File

@ -19,6 +19,7 @@
#include "Common/IniFile.h" #include "Common/IniFile.h"
#include "Common/Logging/Log.h" #include "Common/Logging/Log.h"
#include "Core/Config/MainSettings.h"
#include "Core/Config/SYSCONFSettings.h" #include "Core/Config/SYSCONFSettings.h"
#include "Core/ConfigLoaders/IsSettingSaveable.h" #include "Core/ConfigLoaders/IsSettingSaveable.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
@ -103,6 +104,11 @@ public:
BaseConfigLayerLoader() : ConfigLayerLoader(Config::LayerType::Base) {} BaseConfigLayerLoader() : ConfigLayerLoader(Config::LayerType::Base) {}
void Load(Config::Layer* layer) override void Load(Config::Layer* layer) override
{ {
// List of settings that under no circumstances should be loaded from the global config INI.
static const auto s_setting_disallowed = {
&Config::MAIN_MEMORY_CARD_SIZE.GetLocation(),
};
LoadFromSYSCONF(layer); LoadFromSYSCONF(layer);
for (const auto& system : system_to_ini) for (const auto& system : system_to_ini)
{ {
@ -118,6 +124,12 @@ public:
for (const auto& value : section_map) for (const auto& value : section_map)
{ {
const Config::Location location{system.first, section_name, value.first}; const Config::Location location{system.first, section_name, value.first};
const bool load_disallowed =
std::any_of(begin(s_setting_disallowed), end(s_setting_disallowed),
[&location](const Config::Location* l) { return *l == location; });
if (load_disallowed)
continue;
layer->Set(location, value.second); layer->Set(location, value.second);
} }
} }