diff --git a/nselib/datafiles.lua b/nselib/datafiles.lua
index 42baccf60..4748a7cd2 100644
--- a/nselib/datafiles.lua
+++ b/nselib/datafiles.lua
@@ -183,6 +183,7 @@ function parse_lines(lines, data_struct)
elseif type(value) == "string" or type(value) == "function" then
ret = get_array( lines, value )
elseif type(value) == "table" then
+ local _
_, ret[index] = parse_lines( lines, value )
else
-- TEMP
diff --git a/nselib/dns.lua b/nselib/dns.lua
index ae12bcf13..a7de67e82 100644
--- a/nselib/dns.lua
+++ b/nselib/dns.lua
@@ -717,8 +717,8 @@ end
-- @param flgStr Flags as a binary digit string.
-- @return Table representing flags.
local function decodeFlags(flgStr)
- flags = {}
- flgTbl = str2tbl(flgStr)
+ local flags = {}
+ local flgTbl = str2tbl(flgStr)
if flgTbl[1] == '1' then flags.QR = true end
if flgTbl[2] == '1' then flags.OC1 = true end
if flgTbl[3] == '1' then flags.OC2 = true end
diff --git a/nselib/imap.lua b/nselib/imap.lua
index e280cba07..038fede5c 100644
--- a/nselib/imap.lua
+++ b/nselib/imap.lua
@@ -21,7 +21,7 @@ function capabilities(host, port)
local proto = (port.version and port.version.service_tunnel == "ssl" and "ssl") or "tcp"
if not socket:connect(host.ip, port.number, proto) then return nil, "Could Not Connect" end
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
if not string.match(line, "^[%*] OK") then return nil, "No Response" end
socket:send("a001 CAPABILITY\r\n")
diff --git a/nselib/ipOps.lua b/nselib/ipOps.lua
index 3c7f5c0de..e0468be7e 100644
--- a/nselib/ipOps.lua
+++ b/nselib/ipOps.lua
@@ -31,6 +31,7 @@ module ( "ipOps" )
-- @return True or false (or nil in case of an error).
-- @return String error message in case of an error.
isPrivate = function( ip )
+ local err
ip, err = expand_ip( ip )
if err then return nil, err end
@@ -77,7 +78,7 @@ todword = function( ip )
return nil, "Error in ipOps.todword: Expected IPv4 address."
end
- local n, ret = {}
+ local n, ret, err = {}
n, err = get_parts_as_number( ip )
if err then return nil, err end
@@ -104,6 +105,7 @@ end
-- nil in case of an error).
-- @return String error message in case of an error.
get_parts_as_number = function( ip )
+ local err
ip, err = expand_ip( ip )
if err then return nil, err end
@@ -250,6 +252,7 @@ end
-- nil in case of an error).
-- @return String error message in case of an error.
expand_ip = function( ip )
+ local err
if type( ip ) ~= "string" or ip == "" then
return nil, "Error in ipOps.expand_ip: Expected IP address as a string."
@@ -427,6 +430,7 @@ end
-- digits (or nil in case of an error).
-- @return String error message in case of an error.
ip_to_bin = function( ip )
+ local err
ip, err = expand_ip( ip )
if err then return nil, err end
@@ -473,6 +477,7 @@ bin_to_ip = function( binstring )
return nil, "Error in ipOps.bin_to_ip: Expected string of binary digits."
end
+ local af
if string.len( binstring ) == 32 then
af = 4
elseif string.len( binstring ) == 128 then
@@ -481,7 +486,7 @@ bin_to_ip = function( binstring )
return nil, "Error in ipOps.bin_to_ip: Expected exactly 32 or 128 binary digits."
end
- t = {}
+ local t = {}
if af == 6 then
local pattern = string.rep( "[01]", 16 )
for chunk in string.gmatch( binstring, pattern ) do
diff --git a/nselib/match.lua b/nselib/match.lua
index 315983cae..f28cfafee 100644
--- a/nselib/match.lua
+++ b/nselib/match.lua
@@ -29,7 +29,7 @@ regex = function(pattern)
local r = pcre.new(pattern, 0,"C")
return function(buf)
- s,e = r:exec(buf, 0,0);
+ local s,e = r:exec(buf, 0,0);
return s,e
end
end
diff --git a/nselib/msrpc.lua b/nselib/msrpc.lua
index 90e4b80d7..6810d681a 100644
--- a/nselib/msrpc.lua
+++ b/nselib/msrpc.lua
@@ -2122,6 +2122,7 @@ function winreg_queryvalue(smbstate, handle, value)
-- Format the type properly and put it in "value"
if(result['data'] ~= nil) then
+ local _
if(result['type'] == "REG_DWORD") then
_, result['value'] = bin.unpack(" 0x7f then
ch = string.byte(".", 1)
end
@@ -84,18 +84,18 @@ function print_hex(str)
end
-- Prints out the final, partial line
- line = math.floor((string.len(str)/16)) + 1
+ local line = math.floor((string.len(str)/16)) + 1
io.write(string.format("%08x ", (line - 1) * 16))
for char=1, string.len(str) % 16, 1 do
- ch = string.byte(str, ((line - 1) * 16) + char)
+ local ch = string.byte(str, ((line - 1) * 16) + char)
io.write(string.format("%02x ", ch))
end
io.write(string.rep(" ", 16 - (string.len(str) % 16)));
io.write(" ")
for char=1, string.len(str) % 16, 1 do
- ch = string.byte(str, ((line - 1) * 16) + char)
+ local ch = string.byte(str, ((line - 1) * 16) + char)
if ch < 0x20 or ch > 0x7f then
ch = string.byte(".", 1)
end
diff --git a/nselib/packet.lua b/nselib/packet.lua
index 70928760e..f40fd0b0f 100644
--- a/nselib/packet.lua
+++ b/nselib/packet.lua
@@ -285,14 +285,14 @@ end
--- Set the source IP address.
-- @param binip The source IP address as a byte string.
function Packet:ip_set_bin_src(binip)
- nrip = u32(binip, 0)
+ local nrip = u32(binip, 0)
self:set_u32(self.ip_offset + 12, nrip)
self.ip_bin_src = self:raw(self.ip_offset + 12,4) -- raw 4-bytes string
end
--- Set the destination IP address.
-- @param binip The destination IP address as a byte string.
function Packet:ip_set_bin_dst(binip)
- nrip = u32(binip, 0)
+ local nrip = u32(binip, 0)
self:set_u32(self.ip_offset + 16, nrip)
self.ip_bin_dst = self:raw(self.ip_offset + 16,4)
end
diff --git a/nselib/pop3.lua b/nselib/pop3.lua
index c182b12e5..566504c66 100644
--- a/nselib/pop3.lua
+++ b/nselib/pop3.lua
@@ -43,7 +43,7 @@ end
-- @return Error code if status is false.
function login_user(socket, user, pw)
socket:send("USER " .. user .. "\r\n")
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
if not stat(line) then return false, err.user_error end
socket:send("PASS " .. pw .. "\r\n")
@@ -67,7 +67,7 @@ function login_sasl_plain(socket, user, pw)
local auth64 = base64.enc(user .. "\0" .. user .. "\0" .. pw)
socket:send("AUTH PLAIN " .. auth64 .. "\r\n")
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
if stat(line) then
return true, err.none
@@ -91,14 +91,14 @@ function login_sasl_login(socket, user, pw)
socket:send("AUTH LOGIN\r\n")
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
if not base64.dec(string.sub(line, 3)) == "User Name:" then
return false, err.userError
end
socket:send(user64)
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
if not base64.dec(string.sub(line, 3)) == "Password:" then
return false, err.userError
@@ -106,7 +106,7 @@ function login_sasl_login(socket, user, pw)
socket:send(pw64)
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
if stat(line) then
return true, err.none
@@ -129,7 +129,7 @@ function login_apop(socket, user, pw, challenge)
local apStr = stdnse.tohex(openssl.md5(challenge .. pw))
socket:send(("APOP %s %s\r\n"):format(user, apStr))
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
if (stat(line)) then
return true, err.none
@@ -152,14 +152,14 @@ function capabilities(host, port)
local opts = {timeout=10000, recv_before=true}
local i = 1
- socket, line, bopt, first_line = comm.tryssl(host, port, "CAPA\r\n" , opts)
+ local socket, line, bopt, first_line = comm.tryssl(host, port, "CAPA\r\n" , opts)
if not socket then return nil, "Could Not Connect" end
if not stat(first_line) then return nil, "No Response" end
if string.find(first_line, "<[%p%w]+>") then capas.APOP = true end
- lines = stdnse.strsplit("\r\n",line)
- line = lines[1]
+ local lines = stdnse.strsplit("\r\n",line)
+ local line = lines[1]
if not stat(line) then
capas.capa = false
@@ -199,7 +199,7 @@ function login_sasl_crammd5(socket, user, pw)
socket:send("AUTH CRAM-MD5\r\n")
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
local challenge = base64.dec(string.sub(line, 3))
@@ -207,7 +207,7 @@ function login_sasl_crammd5(socket, user, pw)
local authStr = base64.enc(user .. " " .. digest)
socket:send(authStr .. "\r\n")
- status, line = socket:receive_lines(1)
+ local status, line = socket:receive_lines(1)
if stat(line) then
return true, err.none
diff --git a/nselib/smb.lua b/nselib/smb.lua
index 4196db07d..470bb24ec 100644
--- a/nselib/smb.lua
+++ b/nselib/smb.lua
@@ -309,7 +309,7 @@ function add_account(host, username, password)
if(string.lower(username) ~= "guest" and string.lower(username) ~= "") then
-- Save the new account if this is our first one, or our other account isn't an admin
if(nmap.registry[host.ip]['smbaccount'] == nil or nmap.registry[host.ip]['smbaccount']['is_admin'] == false) then
- local result
+ local result, _
nmap.registry[host.ip]['smbaccount'] = {}
nmap.registry[host.ip]['smbaccount']['username'] = username
@@ -587,7 +587,7 @@ function start_netbios(host, port, name)
-- If all else fails, use each substring of the DNS name (this is a HUGE hack, but is actually
-- a recommended way of doing this!)
if(host.name ~= nil and host.name ~= "") then
- new_names = get_subnames(host.name)
+ local new_names = get_subnames(host.name)
for i = 1, #new_names, 1 do
names[#names + 1] = new_names[i]
end
@@ -604,7 +604,7 @@ function start_netbios(host, port, name)
-- Some debug information
stdnse.print_debug(1, "SMB: Trying to start NetBIOS session with name = '%s'", name)
-- Request a NetBIOS session
- session_request = bin.pack(">CCSzz",
+ local session_request = bin.pack(">CCSzz",
0x81, -- session request
0x00, -- flags
0x44, -- length
@@ -999,7 +999,7 @@ function negotiate_protocol(smb)
-- Send the negotiate request
stdnse.print_debug(2, "SMB: Sending SMB_COM_NEGOTIATE")
- result, err = smb_send(smb, header, parameters, data)
+ local result, err = smb_send(smb, header, parameters, data)
if(status == false) then
return false, err
end
@@ -1011,6 +1011,7 @@ function negotiate_protocol(smb)
end
-- Parse out the header
+ local uid, tid, header4
pos, header1, header2, header3, header4, command, status, flags, flags2, pid_high, signature, unused, tid, pid, uid, mid = bin.unpack("I", buffer )
- padding = 8 - payload_length % 8
+ local padding = 8 - payload_length % 8
assert(payload_length)
packet_length = buffer:len()
if payload_length + 4 + padding > packet_length then return nil end
@@ -42,7 +42,7 @@ end
-- @return status True or false
-- @return packet The packet received
receive_ssh_packet = function( socket )
- status, packet = socket:receive_buf(check_packet_length)
+ local status, packet = socket:receive_buf(check_packet_length)
return status, packet
end
@@ -55,7 +55,7 @@ end
-- fingerprint.
fetch_host_key = function(host, port)
local socket = nmap.new_socket()
- local status
+ local status, _
status = socket:connect(host.ip, port.number)
if not status then return end
@@ -169,7 +169,7 @@ fingerprint_visual = function( fingerprint, algorithm, bits )
end
-- we start in the center and mark it
- x, y = math.ceil(fieldsize_x/2), math.ceil(fieldsize_y/2)
+ local x, y = math.ceil(fieldsize_x/2), math.ceil(fieldsize_y/2)
field[x][y] = #characters - 1;
-- iterate over fingerprint
diff --git a/nselib/ssh2.lua b/nselib/ssh2.lua
index 3dc6b138f..d8dc1aa55 100644
--- a/nselib/ssh2.lua
+++ b/nselib/ssh2.lua
@@ -43,7 +43,7 @@ end
-- @return status True or false
-- @return packet The packet received
transport.receive_packet = function( socket )
- status, packet = socket:receive_buf(check_packet_length)
+ local status, packet = socket:receive_buf(check_packet_length)
return status, packet
end
@@ -95,12 +95,12 @@ end
--- Build a kex_init packet.
transport.kex_init = function( cookie, options )
options = options or {}
- kex_algorithms = "diffie-hellman-group1-sha1"
- host_key_algorithms = options['host_key_algorithms'] or "ssh-dss,ssh-rsa"
- encryption_algorithms = "aes128-cbc,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr"
- mac_algorithms = "hmac-md5,hmac-sha1,hmac-ripemd160"
- compression_algorithms = "none"
- languages = ""
+ local kex_algorithms = "diffie-hellman-group1-sha1"
+ local host_key_algorithms = options['host_key_algorithms'] or "ssh-dss,ssh-rsa"
+ local encryption_algorithms = "aes128-cbc,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr"
+ local mac_algorithms = "hmac-md5,hmac-sha1,hmac-ripemd160"
+ local compression_algorithms = "none"
+ local languages = ""
local payload = bin.pack( ">cAaa", SSH2.SSH_MSG_KEXINIT, cookie, kex_algorithms, host_key_algorithms )
payload = payload .. bin.pack( ">aa", encryption_algorithms, encryption_algorithms )
diff --git a/nselib/tab.lua b/nselib/tab.lua
index d65f826c1..d095dcbbd 100644
--- a/nselib/tab.lua
+++ b/nselib/tab.lua
@@ -113,7 +113,7 @@ function dump(t)
for i=1,t['rows'] do
for x=1, t['cols'] do
if t[i][x] ~= nil then
- length = string.len(t[i][x])
+ local length = string.len(t[i][x])
table = table .. t[i][x]
table = table .. string.rep(' ', col_len[x]-length)
end
diff --git a/nselib/url.lua b/nselib/url.lua
index 4ac060c81..2dba368b3 100644
--- a/nselib/url.lua
+++ b/nselib/url.lua
@@ -213,6 +213,7 @@ end
-- @return The corresponding absolute URL.
-----------------------------------------------------------------------------
function absolute(base_url, relative_url)
+ local base_parsed;
if type(base_url) == "table" then
base_parsed = base_url
base_url = build(base_parsed)
@@ -313,7 +314,7 @@ function parse_query(query)
query = string.gsub(query, "<", "<")
query = string.gsub(query, ">", ">")
- function ginsert(qstr)
+ local function ginsert(qstr)
local first, last = string.find(qstr, "=")
if first then
parsed[string.sub(qstr, 0, first-1)] = string.sub(qstr, first+1)