diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2013-06-24 19:46:41 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2013-06-24 19:46:41 -0300 |
commit | 6dfda90a9a9f503eb38207cf1451ef3557608ddd (patch) | |
tree | 4747c113c3f04bf964b42f16d64a3421562a206e /src | |
parent | 694fc86a750e6a9b51c09e21ed70ee4326f85f14 (diff) | |
download | luarocks-6dfda90a9a9f503eb38207cf1451ef3557608ddd.tar.gz luarocks-6dfda90a9a9f503eb38207cf1451ef3557608ddd.tar.bz2 luarocks-6dfda90a9a9f503eb38207cf1451ef3557608ddd.zip |
Add two new configuration options, 'hooks_enabled' and 'accepted_build_types',
to deal with some security concerns raised in #35.
Diffstat (limited to 'src')
-rw-r--r-- | src/luarocks/build.lua | 4 | ||||
-rw-r--r-- | src/luarocks/cfg.lua | 1 | ||||
-rw-r--r-- | src/luarocks/repos.lua | 5 | ||||
-rw-r--r-- | src/luarocks/util.lua | 9 |
4 files changed, 19 insertions, 0 deletions
diff --git a/src/luarocks/build.lua b/src/luarocks/build.lua index 27afe18d..71b3cb89 100644 --- a/src/luarocks/build.lua +++ b/src/luarocks/build.lua | |||
@@ -197,6 +197,10 @@ function build_rockspec(rockspec_file, need_to_fetch, minimal_mode, deps_mode) | |||
197 | build.type = "builtin" | 197 | build.type = "builtin" |
198 | end | 198 | end |
199 | 199 | ||
200 | if cfg.accepted_build_types and util.array_contains(cfg.accepted_build_types, build.type) then | ||
201 | return nil, "This rockspec uses the '"..build.type.."' build type, which is blocked by the 'accepted_build_types' setting in your LuaRocks configuration." | ||
202 | end | ||
203 | |||
200 | local build_type | 204 | local build_type |
201 | ok, build_type = pcall(require, "luarocks.build." .. build.type) | 205 | ok, build_type = pcall(require, "luarocks.build." .. build.type) |
202 | if not ok or not type(build_type) == "table" then | 206 | if not ok or not type(build_type) == "table" then |
diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua index a4626e10..259293c3 100644 --- a/src/luarocks/cfg.lua +++ b/src/luarocks/cfg.lua | |||
@@ -182,6 +182,7 @@ local defaults = { | |||
182 | use_extensions = false, | 182 | use_extensions = false, |
183 | accept_unknown_fields = false, | 183 | accept_unknown_fields = false, |
184 | fs_use_modules = true, | 184 | fs_use_modules = true, |
185 | hooks_enabled = true, | ||
185 | deps_mode = "one", | 186 | deps_mode = "one", |
186 | 187 | ||
187 | lua_modules_path = "/share/lua/"..lua_version, | 188 | lua_modules_path = "/share/lua/"..lua_version, |
diff --git a/src/luarocks/repos.lua b/src/luarocks/repos.lua index dc1b63c8..5e87afe3 100644 --- a/src/luarocks/repos.lua +++ b/src/luarocks/repos.lua | |||
@@ -131,6 +131,11 @@ function run_hook(rockspec, hook_name) | |||
131 | if not hooks then | 131 | if not hooks then |
132 | return true | 132 | return true |
133 | end | 133 | end |
134 | |||
135 | if cfg.hooks_enabled == false then | ||
136 | return nil, "This rockspec contains hooks, which are blocked by the 'hooks_enabled' setting in your LuaRocks configuration." | ||
137 | end | ||
138 | |||
134 | if not hooks.substituted_variables then | 139 | if not hooks.substituted_variables then |
135 | util.variable_substitutions(hooks, rockspec.variables) | 140 | util.variable_substitutions(hooks, rockspec.variables) |
136 | hooks.substituted_variables = true | 141 | hooks.substituted_variables = true |
diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua index c5095675..b2428f62 100644 --- a/src/luarocks/util.lua +++ b/src/luarocks/util.lua | |||
@@ -461,3 +461,12 @@ function show_table(t, name, indent) | |||
461 | addtocart(t, name, indent) | 461 | addtocart(t, name, indent) |
462 | return cart .. autoref | 462 | return cart .. autoref |
463 | end | 463 | end |
464 | |||
465 | function array_contains(tbl, value) | ||
466 | for _, v in ipairs(tbl) do | ||
467 | if v == value then | ||
468 | return true | ||
469 | end | ||
470 | end | ||
471 | return false | ||
472 | end | ||