Nmap Development mailing list archives
NSE crash in socket_lock when connect used in prerule
From: David Fifield <david () bamsoftware com>
Date: Wed, 26 Mar 2014 18:21:07 -0700
NSE crashes in socket_lock when a socket is connected in a prerule (or
postrule, or portrule) function.
prerule = function()
local socket = nmap.new_socket("udp")
socket:connect("8.8.8.8", 53, "udp")
end
action = function()
return "done"
end
$ ./nmap --script scripts/test.nse
Starting Nmap 6.41SVN ( http://nmap.org ) at 2014-03-26 18:16 PDT
NSE: A thread for scripts/test.nse failed to load in prerule function:
table index is nil
stack traceback:
[C]: in function 'connect'
scripts/test.nse:3: in function '?'
/home/david/nmap-git/nse_main.lua:430: in function </home/david/nmap-git/nse_main.lua:428>
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.03 seconds
The crash is in the last lua_rawset call in socket_lock. I suppose it
has something to do with there not existing a script thread at the time
the prerule is called. It seems like you should be able to use a socket
in a prerule, though. Is there a good fix for this?
/* There is room for this thread to open sockets */
nse_base(L);
nseU_weaktable(L, 0, 0, "k"); /* weak socket references */
lua_pushvalue(L, idx); /* socket */
lua_pushboolean(L, true);
lua_rawset(L, -3); /* add to sockets table */
lua_rawset(L, THREAD_SOCKETS); /* add new <Thread, Sockets Table> Pair
* to THREAD_SOCKETS */
David Fifield
_______________________________________________
Sent through the dev mailing list
http://nmap.org/mailman/listinfo/dev
Archived at http://seclists.org/nmap-dev/
Current thread:
- NSE crash in socket_lock when connect used in prerule David Fifield (Mar 26)
- Re: NSE crash in socket_lock when connect used in prerule Patrick Donnelly (Mar 28)
- Re: NSE crash in socket_lock when connect used in prerule Daniel Miller (Mar 28)
- Re: NSE crash in socket_lock when connect used in prerule Patrick Donnelly (Mar 28)
