From: Rogier Date: Thu, 7 Jan 2016 19:59:35 +0000 (+0100) Subject: Fix the checking of flags values in the settings tab X-Git-Tag: 0.4.14~330 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=31ac53dfd0eb0ab1e42921e85cf6575a16cbc38e;p=oweals%2Fminetest.git Fix the checking of flags values in the settings tab 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. --- diff --git a/builtin/mainmenu/tab_settings.lua b/builtin/mainmenu/tab_settings.lua index f3a09a985..472becea2 100644 --- a/builtin/mainmenu/tab_settings.lua +++ b/builtin/mainmenu/tab_settings.lua @@ -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())