From: Glenn Washburn Date: Thu, 2 Mar 2023 05:39:48 +0000 (-0600) Subject: luci-mod-network: add stricter wireless interface name validation X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=6ad6a241c32ebd4d62f6021a2e3cbe4e1bc192c2;p=project%2Fluci.git luci-mod-network: add stricter wireless interface name validation Linux wireless interface names have the following restrictions: * It must not be an empty string * It must not be '.' or '..' * It must not contain any /, : or space character ( , \t, \n, ...) * It must be less than 16 chars * It likely must not contain any % either Fixes: 8673aef8db ("luci-mod-network: remove uciname validation from wireless interface") Signed-off-by: Glenn Washburn [reword validation error messages, remove extended description text as it would be shown as part of the validation errors] Signed-off-by: Jo-Philipp Wich --- diff --git a/modules/luci-base/htdocs/luci-static/resources/validation.js b/modules/luci-base/htdocs/luci-static/resources/validation.js index 6dddf964fb..b7a3a140e4 100644 --- a/modules/luci-base/htdocs/luci-static/resources/validation.js +++ b/modules/luci-base/htdocs/luci-static/resources/validation.js @@ -426,6 +426,15 @@ var ValidatorFactory = baseclass.extend({ return this.assert(this.value.match(/^[a-zA-Z0-9_]+$/), _('valid UCI identifier')); }, + netdevname: function() { + var v = this.value; + + if (v == '.' || v == '..') + return this.assert(false, _('valid network device name, not "." or ".."')); + + return this.assert(v.match(/^[^:/%\s]{1,15}$/), _('valid network device name between 1 and 15 characters not containing ":", "/", "%" or spaces')); + }, + range: function(min, max) { var val = this.factory.parseDecimal(this.value); return this.assert(val >= +min && val <= +max, _('value between %f and %f').format(min, max)); diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js index a2b0c84ce2..6b1bd262fb 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js @@ -1152,7 +1152,7 @@ return view.extend({ o = ss.taboption('advanced', form.Value, 'ifname', _('Interface name'), _('Override default interface name')); o.optional = true; - o.datatype = 'maxlength(15)'; + o.datatype = 'netdevname'; o.placeholder = radioNet.getIfname(); if (/^radio\d+\.network/.test(o.placeholder)) o.placeholder = '';