Fix l_request_insecure_environment not ignoring all whitespace (#4395)
authorDorian Wouters <elementw@openmailbox.org>
Wed, 3 Aug 2016 22:41:54 +0000 (00:41 +0200)
committerest31 <est31@users.noreply.github.com>
Wed, 3 Aug 2016 22:41:54 +0000 (00:41 +0200)
l_request_insecure_environment didn't ignore all whitespace in the
secure.trusted_mods config option.

Replaces std::remove with std::remove_if and the isspace function.

src/script/lua_api/l_util.cpp

index d090fc91c5a40bc84d731e78bc3e4699c069b2e6..95a5fc4d10fb59412cc0850890b67f8d886846de 100644 (file)
@@ -446,8 +446,9 @@ int ModApiUtil::l_request_insecure_environment(lua_State *L)
        // Check secure.trusted_mods
        const char *mod_name = lua_tostring(L, -1);
        std::string trusted_mods = g_settings->get("secure.trusted_mods");
-       trusted_mods.erase(std::remove(trusted_mods.begin(),
-                       trusted_mods.end(), ' '), trusted_mods.end());
+       trusted_mods.erase(std::remove_if(trusted_mods.begin(),
+                       trusted_mods.end(), static_cast<int(*)(int)>(&std::isspace)),
+                       trusted_mods.end());
        std::vector<std::string> mod_list = str_split(trusted_mods, ',');
        if (std::find(mod_list.begin(), mod_list.end(), mod_name) ==
                        mod_list.end()) {