diff options
author | Einar Johan Trøan Sømåen | 2013-01-22 19:18:29 +0100 |
---|---|---|
committer | Einar Johan Trøan Sømåen | 2013-01-22 19:18:29 +0100 |
commit | d322592037da4bd013a9c1868c0d76d89b487750 (patch) | |
tree | 074c90ed9373b696c15a5648dfe513b4aa95134a | |
parent | 472f722556e33381af1d44cde93aa2e75ce2e169 (diff) | |
download | scummvm-rg350-d322592037da4bd013a9c1868c0d76d89b487750.tar.gz scummvm-rg350-d322592037da4bd013a9c1868c0d76d89b487750.tar.bz2 scummvm-rg350-d322592037da4bd013a9c1868c0d76d89b487750.zip |
WINTERMUTE: Guard ConfMan a bit better.
-rw-r--r-- | engines/wintermute/base/base_game.cpp | 4 | ||||
-rw-r--r-- | engines/wintermute/utils/string_util.cpp | 6 |
2 files changed, 6 insertions, 4 deletions
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp index 7402bc6f30..46acd8cd98 100644 --- a/engines/wintermute/base/base_game.cpp +++ b/engines/wintermute/base/base_game.cpp @@ -1258,7 +1258,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack stack->correctParams(2); const char *key = stack->pop()->getString(); const char *val = stack->pop()->getString(); - Common::String privKey = "priv_" + StringUtil::encodeSetting(key); + Common::String privKey = "wme_" + StringUtil::encodeSetting(key); Common::String privVal = StringUtil::encodeSetting(val); ConfMan.set(privKey, privVal); stack->pushNULL(); @@ -1272,7 +1272,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack stack->correctParams(2); const char *key = stack->pop()->getString(); const char *initVal = stack->pop()->getString(); - Common::String privKey = "priv_" + StringUtil::encodeSetting(key); + Common::String privKey = "wme_" + StringUtil::encodeSetting(key); Common::String result = initVal; if (ConfMan.hasKey(privKey)) { result = StringUtil::decodeSetting(ConfMan.get(key)); diff --git a/engines/wintermute/utils/string_util.cpp b/engines/wintermute/utils/string_util.cpp index 7b3b0e1297..02946dbb2d 100644 --- a/engines/wintermute/utils/string_util.cpp +++ b/engines/wintermute/utils/string_util.cpp @@ -213,8 +213,10 @@ int StringUtil::indexOf(const WideString &str, const WideString &toFind, size_t } Common::String StringUtil::encodeSetting(const Common::String &str) { - if (str.contains('=')) { - error("Setting contains '='"); + for (int i = 0; i < str.size(); i++) { + if ((str[i] < 33) || (str[i] == '=') || (str[i] > 126)) { + error("Setting contains illegal characters: %s", str.c_str()); + } } return str; } |