1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-13 19:29:04 +00:00

This patch fixes a bug reported here [1]. The bug was due to the nsock_yield

struct not being set in any of the pcap functions. Because of this,
the callback routines would attempt to use a NULL pointer for the lua_State *
and would then SEGFAULT.

[1] http://seclists.org/nmap-dev/2009/q2/0180.html
This commit is contained in:
batrick
2009-04-25 10:06:58 +00:00
parent d122b91891
commit 0924a6826f

View File

@@ -1240,6 +1240,8 @@ static int l_nsock_ncap_register(lua_State *L){
TIMEVAL_MSEC_ADD(nr->end_time, now, udata->timeout);
nr->key = strdup(hex((char*)testdata, testdatasz));
nr->yield = &udata->yield;
udata->yield.thread = L;
udata->yield.udata = udata;
nr->ncap_cback_ref = udata->ncap_cback_ref;
/* always create new event. */
nr->nseid = nsock_pcap_read_packet(nsp,
@@ -1273,6 +1275,8 @@ int l_nsock_pcap_receive(lua_State *L){
* udata during this request */
struct ncap_request *nr = udata->ncap_request;
udata->ncap_request = NULL;
udata->yield.thread = L;
udata->yield.udata = udata;
/* ready to receive data? don't suspend thread*/
if(nr->received) /*data already received*/
@@ -1281,7 +1285,6 @@ int l_nsock_pcap_receive(lua_State *L){
/* no data yet? suspend thread */
nr->suspended = 1;
udata->yield.thread = L;
return lua_yield(L, 0);
}