From fbdd7f53d95edeb9f1e4f845f73e5471e1ba79fa Mon Sep 17 00:00:00 2001 From: dmiller Date: Mon, 18 Apr 2016 05:11:57 +0000 Subject: [PATCH] Don't crash when portmapper reports non-tcp/udp transports. Fixes #363 --- scripts/rpcinfo.nse | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/scripts/rpcinfo.nse b/scripts/rpcinfo.nse index abd92ab43..b028d6fd3 100644 --- a/scripts/rpcinfo.nse +++ b/scripts/rpcinfo.nse @@ -94,19 +94,21 @@ action = function(host, port) for progid, v in pairs(rpcinfo) do xmlout[tostring(progid)] = v for proto, v2 in pairs(v) do - local nmapport = nmap.get_port_state(host, {number=v2.port, protocol=proto}) - if nmapport and (nmapport.state == "open" or nmapport.state == "open|filtered") then - nmapport.version = nmapport.version or {} - -- If we don't already know it, or we only know that it's "rpcbind" - if nmapport.service == nil or nmapport.version.service_dtype == "table" or port.service == "rpcbind" then - nmapport.version.name = rpc.Util.ProgNumberToName(progid) - nmapport.version.extrainfo = "RPC #" .. progid - if #v2.version > 1 then - nmapport.version.version = ("%d-%d"):format(v2.version[1], v2.version[#v2.version]) - else - nmapport.version.version = tostring(v2.version[1]) + if proto == "tcp" or proto == "udp" then + local nmapport = nmap.get_port_state(host, {number=v2.port, protocol=proto}) + if nmapport and (nmapport.state == "open" or nmapport.state == "open|filtered") then + nmapport.version = nmapport.version or {} + -- If we don't already know it, or we only know that it's "rpcbind" + if nmapport.service == nil or nmapport.version.service_dtype == "table" or port.service == "rpcbind" then + nmapport.version.name = rpc.Util.ProgNumberToName(progid) + nmapport.version.extrainfo = "RPC #" .. progid + if #v2.version > 1 then + nmapport.version.version = ("%d-%d"):format(v2.version[1], v2.version[#v2.version]) + else + nmapport.version.version = tostring(v2.version[1]) + end + nmap.set_port_version(host, nmapport, "softmatched") end - nmap.set_port_version(host, nmapport, "softmatched") end end