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