diff --git a/nselib/srvloc.lua b/nselib/srvloc.lua index 384b33c22..fd45e190d 100644 --- a/nselib/srvloc.lua +++ b/nselib/srvloc.lua @@ -75,11 +75,14 @@ Reply = { pos, self.lang_tag = bin.unpack("A" .. lang_tag_len, data, pos) local no_urls, reserved, url_len - pos, self.error_code, no_urls, reserved, self.url_lifetime, - url_len = bin.unpack(">SSCSS", data, pos) + pos, self.error_code, no_urls = bin.unpack(">SS", data, pos) - local num_auths - pos, self.url, num_auths = bin.unpack("A" .. url_len .. "C", data, pos) + if ( no_urls > 0 ) then + pos, reserved, self.url_lifetime, url_len = bin.unpack(">CSS", data, pos) + + local num_auths + pos, self.url, num_auths = bin.unpack("A" .. url_len .. "C", data, pos) + end end, --- Attempts to create an instance by reading data off the socket diff --git a/scripts/broadcast-novell-locate.nse b/scripts/broadcast-novell-locate.nse index ceab75e96..281272365 100644 --- a/scripts/broadcast-novell-locate.nse +++ b/scripts/broadcast-novell-locate.nse @@ -31,7 +31,7 @@ function action() local helper = srvloc.Helper:new() local status, bindery = helper:ServiceRequest("bindery.novell", "DEFAULT") - if ( not(status) ) then return end + if ( not(status) or not(bindery) ) then return end local srvname = bindery:match("%/%/%/(.*)$") local status, attrib = helper:AttributeRequest(bindery, "DEFAULT", "svcaddr-ws")