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)