Skip to content

Commit 3269372

Browse files
committed
Fix #721: handle resource names with special characters in admin settings
1 parent a9fc30f commit 3269372

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

[admin]/admin/server/admin_settings.lua

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ function aGetResourceSettings( resName, bCountOnly )
3333
if allowedAccess[string.sub(rawname,1,1)] then
3434
count = count + 1
3535
-- Remove leading '*','#' or '@'
36-
local temp = string.gsub(rawname,'[%*%#%@](.*)','%1')
36+
local temp = string.gsub(rawname, '^[%*%#%@](.*)', '%1')
37+
-- Escape special characters inside resName
38+
local safeResName = string.gsub(resName, '([^%w])', '%%%1')
3739
-- Remove leading 'resName.'
38-
local name = string.gsub(temp,resName..'%.(.*)','%1')
40+
local name = string.gsub(temp, '^' .. safeResName .. '%.(.*)$', '%1')
3941
-- If name didn't have a leading 'resName.', then it must be the default setting
4042
local bIsDefault = ( temp == name )
4143
if settings[name] == nil then

[admin]/admin2/server/admin_ACL.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,9 @@ function getResourceSettings(resName, bCountOnly)
127127
if (allowedTypes[type(value)]) then
128128
if allowedAccess[string.sub(rawname, 1, 1)] then
129129
count = count + 1
130-
local temp = string.gsub(rawname, "[%*%#%@](.*)", "%1")
131-
local name = string.gsub(temp, resName .. "%.(.*)", "%1")
130+
local temp = string.gsub(rawname, '^[%*%#%@](.*)', '%1')
131+
local safeResName = string.gsub(resName, '([^%w])', '%%%1')
132+
local name = string.gsub(temp, '^' .. safeResName .. '%.(.*)$', '%1')
132133
local bIsDefault = (temp == name)
133134
if (not settings[name]) then
134135
settings[name] = {}

0 commit comments

Comments
 (0)