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
|
||||
-- --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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user