Skip to content

Commit cbbedd2

Browse files
committed
bugfix: fixed dryrun findings
1 parent 7d04ac3 commit cbbedd2

3 files changed

Lines changed: 20 additions & 9 deletions

File tree

dojo/tools/openvas/parser_v2/common.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ def escape_restructured_text(text: str) -> str:
4141
"""Changes text so that restructured text symbols are not interpreted"""
4242
# OpenVAS likes to include markdown like tables in some fields
4343
# Defectdojo uses reStructuredText which causes them to be rendered wrong
44+
text = text.replace("```", "")
45+
text = text.replace("```", "")
4446
return f"```\n{text}\n```"
4547

4648

dojo/tools/openvas/parser_v2/csv_parser.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import csv
22
import io
3+
import logging
34

45
from dateutil.parser import parse as parse_date
56

@@ -13,15 +14,14 @@
1314
setup_finding,
1415
)
1516

17+
logger = logging.getLogger(__name__)
18+
1619

1720
def get_findings_from_csv(file, test) -> list[Finding]:
1821
"""Returns list of findings as defectdojo factory contract expects"""
1922
dupes = {}
20-
content = file.read()
21-
if isinstance(content, bytes):
22-
content = content.decode("utf-8")
23-
24-
csv_reader = csv.reader(io.StringIO(content), delimiter=",", quotechar='"')
23+
file = io.TextIOWrapper(file, encoding="utf-8")
24+
csv_reader = csv.reader(file, delimiter=",", quotechar='"')
2525
column_names = [column_name.lower() for column_name in next(csv_reader) if column_name]
2626

2727
if "nvt name" not in column_names:
@@ -85,8 +85,11 @@ def process_column(
8585
self.aux_info = aux_info
8686

8787
handler = self.column_handlers.get(column_name)
88-
if handler:
89-
handler(column_value)
88+
try:
89+
if handler:
90+
handler(column_value)
91+
except ValueError as e:
92+
logger.debug("openvas parser v2: error parsing column %s: %s", column_name, e)
9093

9194
def _handle_nvt_name(self, column_value: str):
9295
self.finding.title = column_value

dojo/tools/openvas/parser_v2/xml_parser.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import contextlib
2+
import logging
23
from xml.dom import NamespaceErr
34

45
from defusedxml import ElementTree
@@ -14,6 +15,8 @@
1415
)
1516
from dojo.utils import parse_cvss_data
1617

18+
logger = logging.getLogger(__name__)
19+
1720

1821
def get_findings_from_xml(file, test) -> list[Finding]:
1922
"""Returns list of findings as defectdojo factory contract expects"""
@@ -59,8 +62,11 @@ def process_element(self, field, finding: Finding, aux_info: OpenVASFindingAuxDa
5962
self.aux_info = aux_info
6063

6164
handler = self.tag_handlers.get(field.tag)
62-
if handler:
63-
handler(field)
65+
try:
66+
if handler:
67+
handler(field)
68+
except ValueError as e:
69+
logger.debug("openvas parser v2: error parsing field %s: %s", field.tag, e)
6470

6571
def _handle_nvt(self, field):
6672
self.finding.vuln_id_from_tool = field.get("oid")

0 commit comments

Comments
 (0)