Add modname convention checking

Fixes #2037
This commit is contained in:
Novatux 2015-02-18 16:48:58 +01:00
parent 5a0ed780f5
commit 804d65a8ec

@ -16,6 +16,9 @@
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
local function modname_valid(name)
return not name:find("[^a-z0-9_]")
end
local function get_formspec(data) local function get_formspec(data)
@ -195,10 +198,12 @@ local function handle_buttons(this, fields)
for i,mod in ipairs(rawlist) do for i,mod in ipairs(rawlist) do
if not mod.is_modpack and if not mod.is_modpack and
mod.typ ~= "game_mod" then mod.typ ~= "game_mod" then
if mod.enabled then if modname_valid(mod.name) then
worldfile:set("load_mod_"..mod.name, "true") worldfile:set("load_mod_"..mod.name, tostring(mod.enabled))
else else
worldfile:set("load_mod_"..mod.name, "false") if mod.enabled then
gamedata.errormessage = fgettext_ne("Failed to enable mod \"$1\" as it contains disallowed characters. Only chararacters [a-z0-9_] are allowed.", mod.name)
end
end end
mods["load_mod_"..mod.name] = nil mods["load_mod_"..mod.name] = nil
end end