diff --git a/nselib/stdnse.lua b/nselib/stdnse.lua index a173bf057..a800bee4f 100644 --- a/nselib/stdnse.lua +++ b/nselib/stdnse.lua @@ -324,6 +324,10 @@ function tohex( s, options ) return hex end + +local fromhex_helper = function (h) + return char(tonumber(h, 16)) +end ---Decode a hexadecimal string to raw bytes -- -- The string can contain any amount of whitespace and capital or lowercase @@ -342,14 +346,15 @@ function fromhex (hex) if #hex % 2 ~= 0 then return nil, "Odd number of hexadecimal digits" end - return (hex:gsub("..", function (h) return string.char(tonumber(h, 16)) end)) + return hex:gsub("..", fromhex_helper) end +local colonsep = {separator=":"} ---Format a MAC address as colon-separated hex bytes. --@param mac The MAC address in binary, such as host.mac_addr --@return The MAC address in XX:XX:XX:XX:XX:XX format function format_mac(mac) - return tohex(mac, {separator=":"}) + return tohex(mac, colonsep) end ---Either return the string itself, or return "" (or the value of the second parameter) if the string @@ -370,6 +375,7 @@ function string_or_blank(string, blank) end end +local timespec_multipliers = {[""] = 1, s = 1, m = 60, h = 60 * 60, ms = 0.001} --- -- Parses a time duration specification, which is a number followed by a -- unit, and returns a number of seconds. @@ -397,7 +403,6 @@ end function parse_timespec(timespec) if timespec == nil then return nil, "Can't parse nil timespec" end local n, unit, t, m - local multipliers = {[""] = 1, s = 1, m = 60, h = 60 * 60, ms = 0.001} n, unit = match(timespec, "^([%d.]+)(.*)$") if not n then @@ -409,7 +414,7 @@ function parse_timespec(timespec) return nil, format("Can't parse time specification \"%s\" (bad number \"%s\")", timespec, n) end - m = multipliers[unit] + m = timespec_multipliers[unit] if not m then return nil, format("Can't parse time specification \"%s\" (bad unit \"%s\")", timespec, unit) end