From 26db61478504c7b13099b942aeebbdd6ffa4472b Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Fri, 12 Apr 2013 22:56:30 -0300 Subject: Safe quoting for concatenating constant strings into patterns. --- src/luarocks/build/builtin.lua | 2 +- src/luarocks/util.lua | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/luarocks/build/builtin.lua b/src/luarocks/build/builtin.lua index f9cc0302..3d179b34 100644 --- a/src/luarocks/build/builtin.lua +++ b/src/luarocks/build/builtin.lua @@ -223,7 +223,7 @@ function run(rockspec) table.insert(objects, object) end if not ok then break end - local module_name = dir.path(moddir, name:match("([^.]*)$").."."..cfg.lib_extension):gsub("//", "/") + local module_name = dir.path(moddir, name:match("([^.]*)$").."."..util.matchquote(cfg.lib_extension)):gsub("//", "/") if moddir ~= "" then fs.make_dir(moddir) end diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua index c6e0c592..c44dc73d 100644 --- a/src/luarocks/util.lua +++ b/src/luarocks/util.lua @@ -52,6 +52,15 @@ function run_scheduled_functions() end end +--- Produce a Lua pattern that matches precisely the given string +-- (this is suitable to be concatenating to other patterns, +-- so it does not include beginning- and end-of-string markers (^$) +-- @param s string: The input string +-- @return string: The equivalent pattern +function matchquote(s) + return (s:gsub("[?%-+*%[%].%%()$^]","%%%1")) +end + --- Extract flags from an arguments list. -- Given string arguments, extract flag arguments into a flags set. -- For example, given "foo", "--tux=beep", "--bla", "bar", "--baz", -- cgit v1.2.3-55-g6feb