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

Fix #2175: NSE script output now tagged to Target obj, not IP or targetname

This commit is contained in:
dmiller
2020-11-09 18:49:17 +00:00
parent a877e2cb9b
commit 4c28124b77
4 changed files with 24 additions and 0 deletions

View File

@@ -1,5 +1,8 @@
#Nmap Changelog ($Id$); -*-text-*-
o [NSE][GH#2175] Fixed NSE so it will not consolidate all port script output
for targets which share an IP (e.g. HTTP vhosts) under one target. [Daniel Miller]
o [Zenmap][GH#2157] Fixed an issue where a failure to execute Nmap would result
in a Zenmap crash with "TypeError: coercing to Unicode" exception.

View File

@@ -153,6 +153,7 @@ static void push_osmatch_table(lua_State *L, const FingerMatch *match,
* points to nil!
* */
void set_hostinfo(lua_State *L, Target *currenths) {
nseU_setpfield(L, -1, "_Target", (void *)currenths);
nseU_setsfield(L, -1, "ip", currenths->targetipstr());
nseU_setsfield(L, -1, "name", currenths->HostName());
nseU_setsfield(L, -1, "targetname", currenths->TargetName());

View File

@@ -74,6 +74,13 @@ void nseU_setbfield (lua_State *L, int idx, const char *field, int b)
lua_setfield(L, idx, field);
}
void nseU_setpfield (lua_State *L, int idx, const char *field, void * p)
{
idx = lua_absindex(L, idx);
lua_pushlightuserdata(L, p);
lua_setfield(L, idx, field);
}
void nseU_appendfstr (lua_State *L, int idx, const char *fmt, ...)
{
va_list va;
@@ -180,10 +187,16 @@ Target *nseU_gettarget (lua_State *L, int idx)
Target *target;
idx = lua_absindex(L, idx);
luaL_checktype(L, idx, LUA_TTABLE);
lua_getfield(L, idx, "_Target");
lua_getfield(L, idx, "targetname");
lua_getfield(L, idx, "ip");
if (!(lua_isstring(L, -2) || lua_isstring(L, -1)))
luaL_error(L, "host table does not have a 'ip' or 'targetname' field");
if (lua_islightuserdata(L, -3)) /* _Target */
{
lua_pop(L, 2); /* pop ip and targetname, leaving _Target on top */
goto done;
}
/* IP is preferred to targetname because it is more unique. Really, though, a
* user can scan the same IP or targetname multiple times, and NSE will get
* all mixed up. */

View File

@@ -73,6 +73,13 @@ void nseU_setifield (lua_State *L, int idx, const char *field, lua_Integer value
*/
void nseU_setbfield (lua_State *L, int idx, const char *field, int value);
/* void nseU_setpfield (lua_State *L, int idx, [-0, +0, e]
* const char *field, void *p)
*
* Sets the field for table at index idx to lightuserdata p.
*/
void nseU_setpfield (lua_State *L, int idx, const char *field, void * p);
/* void nseU_appendfstr (lua_State *L, int idx, [-0, +0, m]
* const char *fmt, ...)
*