mirror of
https://github.com/nmap/nmap.git
synced 2026-05-13 16:57:06 +00:00
Fix parsing of URLs with query strings but empty paths
The query string was getting slurped into authority
This commit is contained in:
parent
8ce9f04570
commit
5698bd1bb6
2 changed files with 18 additions and 5 deletions
|
|
@ -12,6 +12,9 @@ o [NSE][GH#2183][GH#3239] Script hostmap-crtsh now reports only true subdomains
|
|||
necessarily as a suffix). The old behavior can be enabled by setting script
|
||||
argument hostmap-crtsh.lax. [Sweekar-cmd, nnposter]
|
||||
|
||||
o [NSE] Function url.parse was not properly parsing URLs with query strings
|
||||
but empty paths. [nnposter]
|
||||
|
||||
o [NSE][GH#3253] Function stdnse.make_buffer now accepts an extra parameter
|
||||
that allows preloading the newly created buffer with data. [nnposter]
|
||||
|
||||
|
|
|
|||
|
|
@ -202,6 +202,11 @@ function parse(url, default)
|
|||
parsed.fragment = f
|
||||
return ""
|
||||
end)
|
||||
-- get query string
|
||||
url = string.gsub(url, "%?(.*)", function(q)
|
||||
parsed.query = q
|
||||
return ""
|
||||
end)
|
||||
-- get scheme. Lower-case according to RFC 3986 section 3.1.
|
||||
url = string.gsub(url, "^(%w[%w.+-]*):",
|
||||
function(s) parsed.scheme = string.lower(s); return "" end)
|
||||
|
|
@ -210,11 +215,6 @@ function parse(url, default)
|
|||
parsed.authority = n
|
||||
return ""
|
||||
end)
|
||||
-- get query stringing
|
||||
url = string.gsub(url, "%?(.*)", function(q)
|
||||
parsed.query = q
|
||||
return ""
|
||||
end)
|
||||
-- get params
|
||||
url = string.gsub(url, "%;(.*)", function(p)
|
||||
parsed.params = p
|
||||
|
|
@ -509,6 +509,16 @@ local test_urls = {
|
|||
},
|
||||
_nil = {"scheme", "userinfo", "port", "params", "extension"}
|
||||
},
|
||||
{ _url = "//example?k1=v1&k2=v2",
|
||||
_res = {
|
||||
authority = "example",
|
||||
host = "example",
|
||||
path = "",
|
||||
query = "k1=v1&k2=v2",
|
||||
is_folder = false,
|
||||
},
|
||||
_nil = {"scheme", "userinfo", "port", "params", "extension", "fragment"}
|
||||
},
|
||||
}
|
||||
for _, t in ipairs(test_urls) do
|
||||
local result = parse(t._url)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue