Fix the checking of flags values in the settings tab
authorRogier <rogier777@gmail.com>
Thu, 7 Jan 2016 19:59:35 +0000 (20:59 +0100)
committerparamat <mat.gregory@virginmedia.com>
Sun, 10 Jan 2016 01:03:06 +0000 (01:03 +0000)
Changes:
- Accept setting an empty flags-type value in the settings tab
  if the variable specification permits it
- Don't accept substrings of flag values
  E.g. with values: 'one,two,three', 'hree', 'w', etc. used to
  be accepted. Not any more
- Don't accept flags with random pattern-matching special characters
  E.g. with values: 'one,two,three', 'on.', '(o)[n]e*' etc. used
  to be accepted. Not any more.

builtin/mainmenu/tab_settings.lua

index f3a09a985ec3d102ba4badc85505d721eb9c90a4..472becea2fe976a558d9607adcad81d0a9fee954 100644 (file)
@@ -506,8 +506,8 @@ local function handle_change_setting_buttons(this, fields)
                        local new_value = fields["te_setting_value"]
                        for _,value in ipairs(new_value:split(",", true)) do
                                value = value:trim()
-                               if not value:match(CHAR_CLASSES.FLAGS .. "+")
-                                               or not setting.possible:match("[,]?" .. value .. "[,]?") then
+                               local possible = "," .. setting.possible .. ","
+                               if not possible:find("," .. value .. ",", 0, true) then
                                        this.data.error_message = fgettext_ne("\"$1\" is not a valid flag.", value)
                                        this.data.entered_text = fields["te_setting_value"]
                                        core.update_formspec(this:get_formspec())