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

Avoid a crash when Zenmap can't read a script file

This commit is contained in:
dmiller
2017-07-16 17:51:37 +00:00
parent 1663733bb8
commit 9546d024e9

View File

@@ -363,22 +363,25 @@ class ScriptMetadata (object):
def get_metadata(self, filename): def get_metadata(self, filename):
entry = self.Entry(filename) entry = self.Entry(filename)
entry.description = self.get_string_variable(filename, "description")
entry.arguments = self.get_arguments(entry.filename)
entry.license = self.get_string_variable(filename, "license")
entry.author = self.get_list_variable(filename, "author") or [
self.get_string_variable(filename, "author")]
filepath = os.path.join(self.scripts_dir, filename)
f = open(filepath, "r")
try: try:
for tag_name, tag_text in nsedoc_tags_iter(f): entry.description = self.get_string_variable(filename, "description")
if tag_name == "output" and not entry.output: entry.arguments = self.get_arguments(entry.filename)
entry.output = tag_text entry.license = self.get_string_variable(filename, "license")
elif tag_name == "usage" and not entry.usage: entry.author = self.get_list_variable(filename, "author") or [
entry.usage = tag_text self.get_string_variable(filename, "author")]
finally:
f.close() filepath = os.path.join(self.scripts_dir, filename)
f = open(filepath, "r")
try:
for tag_name, tag_text in nsedoc_tags_iter(f):
if tag_name == "output" and not entry.output:
entry.output = tag_text
elif tag_name == "usage" and not entry.usage:
entry.usage = tag_text
finally:
f.close()
except IOError as e:
entry.description = "Error getting metadata: {}".format(e)
return entry return entry