diff --git a/CHANGELOG b/CHANGELOG index c0933e267..3f2a19d21 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -180,6 +180,10 @@ o Fix a couple bugs in the way the Nmap built system checked for an configure option for specifying your own liblua. [Daniel Roethlisberger] +o The NSE nmap.registry.args table is now available, albeit empty, when + --script-args isn't used. Now scripts don't need to check if it's nil + before attempting to index it. [Kris] + o Changed SSLv2-support.nse so that it only enumerates the list of available ciphers with a verbosity level of at least two or with debugging enabled. [Kris] diff --git a/NmapOps.cc b/NmapOps.cc index 3634e89c5..fc4cb1bdd 100644 --- a/NmapOps.cc +++ b/NmapOps.cc @@ -456,7 +456,10 @@ void NmapOps::ValidateOptions() { if(ipoptions && osscan) error("WARNING: Ip options are NOT used while OS scanning!"); - + + /* Make sure nmap.registry.args is available (even if it's empty) */ + if (!scriptargs) + scriptargs = strdup(""); } void NmapOps::setMaxOSTries(int mot) { diff --git a/nse_init.cc b/nse_init.cc index e437f5495..b836a84d7 100644 --- a/nse_init.cc +++ b/nse_init.cc @@ -285,7 +285,7 @@ int init_lua (lua_State *L) /* int init_parseargs (lua_State *L) * * Arguments - * args Arguments passed through --script-args + * args Arguments passed through --script-args, or "" if it wasn't used * Returns * function Function that returns a table with the arguments, or an error * message describing why the arguments could not be parsed. @@ -320,9 +320,6 @@ int init_parseargs (lua_State *L) */ int init_setargs (lua_State *L) { - if (o.scriptargs == NULL) - return 0; - lua_getglobal(L, "nmap"); lua_getfield(L, -1, "registry");