1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-06 04:31:29 +00:00

Fix lookup order of script args and allow plain 'name.arg' to be specified as 'arg'

This commit is contained in:
dmiller
2017-03-04 19:54:55 +00:00
parent d5038e82c9
commit b61d517a71

View File

@@ -832,20 +832,32 @@ end
-- given. This works also for arguments given as top-level array values, like
-- --script-args=unsafe; for these it returns the value 1.
local function arg_value(argname)
-- First look for the literal script-arg name
-- as a key/value pair
if nmap.registry.args[argname] then
return nmap.registry.args[argname]
end
-- if scriptname.arg is not there, check "arg"
local argument_frags = strsplit("%.", argname)
if nmap.registry.args[argument_frags[2]] then
return nmap.registry.args[argument_frags[2]]
end
-- and alone, as a boolean flag
for _, v in ipairs(nmap.registry.args) do
if v == argname then
return 1
end
end
-- if scriptname.arg is not there, check "arg"
local shortname = argname:match("%.([^.]*)$")
if shortname then
-- as a key/value pair
if nmap.registry.args[shortname] then
return nmap.registry.args[shortname]
end
-- and alone, as a boolean flag
for _, v in ipairs(nmap.registry.args) do
if v == shortname then
return 1
end
end
end
return nil
end