Nmap Development mailing list archives
Re: NSE exceptions: false or nil?
From: Stoiko Ivanov <stoiko () xover htu tuwien ac at>
Date: Fri, 2 Nov 2007 13:00:24 +0100
Hi, On Thu, Nov 01, 2007 at 10:40:22PM -0700, David Fifield wrote:
Are NSE exceptions supposed to return false or nil? At http://insecure.org/nmap/nse/nse-api.html#nse-exceptions it says that the first thing returned is a Boolean value. But trying to catch an exception from connect fails, as the attached example script (test.nse) shows. It produces this message: Initiating SCRIPT ENGINE at 22:26 false Name or service not known SCRIPT ENGINE: In: nse_nmaplib.cc:474 Trying to finalize a non conforming function. Are you sure you return true on success followed by the remaining return values and nil on failure followed by an error string? QUITTING! We see that connect returns (false, "Name or service not known"), but this is "non conforming." Should NSE's internal functions be modified to return nil instead of false, or should false be considered an exception marker? Does the patch I attached do the right thing?
I think the latter would be more convenient. Since the network I/O functions return true on success I would expect a false value to indicate an exception. AFAIK this patch shouldn't cause any problems with the remaining NSE.
David Fifield ..snip.. Index: nse_nmaplib.cc =================================================================== --- nse_nmaplib.cc (revision 6111) +++ nse_nmaplib.cc (working copy) @@ -460,7 +460,7 @@ } static int l_exc_finalize(lua_State *l) { - if (lua_isnil(l, 1)) { + if (lua_isnil(l, 1) || !lua_toboolean(l, 1)) {
This looks good to me, however if I recall correctly the lua_isnil() is not really needed, because lua_toboolean() should return false if there is nil at the specified position on the stack.
lua_pushvalue(l, lua_upvalueindex(1)); lua_call(l, 0, 0); lua_settop(l, 2);
cheers stoiko _______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://SecLists.Org
Current thread:
- NSE exceptions: false or nil? David Fifield (Nov 01)
- Re: NSE exceptions: false or nil? Stoiko Ivanov (Nov 02)
- Re: NSE exceptions: false or nil? David Fifield (Nov 03)
- Re: NSE exceptions: false or nil? Stoiko Ivanov (Nov 02)