Add modname convention checking
authorNovatux <nathanael.courant@laposte.net>
Wed, 18 Feb 2015 15:48:58 +0000 (16:48 +0100)
committerNovatux <nathanael.courant@laposte.net>
Wed, 18 Feb 2015 16:06:09 +0000 (17:06 +0100)
Fixes #2037

builtin/mainmenu/dlg_config_world.lua

index a15e4c11f6c590b958fcfd2b2a87def12b9ef755..4d13faea823f5673fee4495fbf19efc207c095f3 100644 (file)
@@ -16,6 +16,9 @@
 --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)
 
@@ -195,10 +198,12 @@ local function handle_buttons(this, fields)
                for i,mod in ipairs(rawlist) do
                        if not mod.is_modpack and
                                        mod.typ ~= "game_mod" then
-                               if mod.enabled then
-                                       worldfile:set("load_mod_"..mod.name, "true")
+                               if modname_valid(mod.name) then
+                                       worldfile:set("load_mod_"..mod.name, tostring(mod.enabled))
                                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
                                mods["load_mod_"..mod.name] = nil
                        end