aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorjosibake <josibake@protonmail.com>2022-07-28 12:47:53 +0200
committerjosibake <josibake@protonmail.com>2022-10-06 18:20:14 -0400
commit5e744f423838fe7d45453541271bc1a07cd62eac (patch)
tree5e1a842850e85295034478e167630ba42addf8c9 /src/util
parent73b61717a977fc9d23f1bae3f8620641a9dee1f3 (diff)
downloadbitcoin-5e744f423838fe7d45453541271bc1a07cd62eac.tar.xz
util: disallow setting conf in bitcoin.conf
Help from `bitcoind -h` states that conf can only be used from the commandline. However, if conf is set in a bitcoin.conf file, it is ignored but there is no error. Show an error to user if conf is set in a .conf file and prompt them to use `includeconf` if they wish to specify additional config files. Adds `IsConfSupported` function to allow for easily adding conf options to disallow or throw warnings for.
Diffstat (limited to 'src/util')
-rw-r--r--src/util/system.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/util/system.cpp b/src/util/system.cpp
index c3c6cbfef6..948b3f2673 100644
--- a/src/util/system.cpp
+++ b/src/util/system.cpp
@@ -935,6 +935,14 @@ static bool GetConfigOptions(std::istream& stream, const std::string& filepath,
return true;
}
+bool IsConfSupported(KeyInfo& key, std::string& error) {
+ if (key.name == "conf") {
+ error = "conf cannot be set in the configuration file; use includeconf= if you want to include additional config files";
+ return false;
+ }
+ return true;
+}
+
bool ArgsManager::ReadConfigStream(std::istream& stream, const std::string& filepath, std::string& error, bool ignore_invalid_keys)
{
LOCK(cs_args);
@@ -945,6 +953,7 @@ bool ArgsManager::ReadConfigStream(std::istream& stream, const std::string& file
for (const std::pair<std::string, std::string>& option : options) {
KeyInfo key = InterpretKey(option.first);
std::optional<unsigned int> flags = GetArgFlags('-' + key.name);
+ if (!IsConfSupported(key, error)) return false;
if (flags) {
std::optional<util::SettingsValue> value = InterpretValue(key, &option.second, *flags, error);
if (!value) {