Skip to content

Commit 3fa721a

Browse files
authored
Import Memory Handling: Do not maintain parsed findings long term (#12106)
1 parent f11e28f commit 3fa721a

2 files changed

Lines changed: 18 additions & 21 deletions

File tree

dojo/importers/default_importer.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ def process_scan(
105105
parser = self.get_parser()
106106
# Get the findings from the parser based on what methods the parser supplies
107107
# This could either mean traditional file parsing, or API pull parsing
108-
self.parsed_findings = self.parse_findings(scan, parser)
108+
parsed_findings = self.parse_findings(scan, parser)
109109
# process the findings in the foreground or background
110-
new_findings = self.determine_process_method(self.parsed_findings, **kwargs)
110+
new_findings = self.determine_process_method(parsed_findings, **kwargs)
111111
# Close any old findings in the processed list if the the user specified for that
112112
# to occur in the form that is then passed to the kwargs
113113
closed_findings = self.close_old_findings(self.test.finding_set.all(), **kwargs)
@@ -329,13 +329,10 @@ def parse_findings(
329329
`get_tests` function on the parser object
330330
"""
331331
# Attempt any preprocessing before generating findings
332-
if len(self.parsed_findings) == 0 and self.test is None:
333-
scan = self.process_scan_file(scan)
334-
if hasattr(parser, "get_tests"):
335-
self.parsed_findings = self.parse_findings_dynamic_test_type(scan, parser)
336-
else:
337-
self.parsed_findings = self.parse_findings_static_test_type(scan, parser)
338-
return self.parsed_findings
332+
scan = self.process_scan_file(scan)
333+
if hasattr(parser, "get_tests"):
334+
return self.parse_findings_dynamic_test_type(scan, parser)
335+
return self.parse_findings_static_test_type(scan, parser)
339336

340337
def parse_findings_static_test_type(
341338
self,
@@ -348,7 +345,9 @@ def parse_findings_static_test_type(
348345
file import as usual from the base class
349346
"""
350347
# by default test_type == scan_type
351-
self.test = self.create_test(self.scan_type)
348+
# Create a new test if it has not already been created
349+
if not self.test:
350+
self.test = self.create_test(self.scan_type)
352351
logger.debug("IMPORT_SCAN: Parse findings")
353352
# Use the parent method for the rest of this
354353
return super().parse_findings_static_test_type(scan, parser)
@@ -384,8 +383,9 @@ def parse_findings_dynamic_test_type(
384383
test_type_name = f"{tests[0].type} Scan"
385384
if test_type_name != self.scan_type:
386385
test_type_name = f"{test_type_name} ({self.scan_type})"
387-
# Create a new test
388-
self.test = self.create_test(test_type_name)
386+
# Create a new test if it has not already been created
387+
if not self.test:
388+
self.test = self.create_test(test_type_name)
389389
# This part change the name of the Test
390390
# we get it from the data of the parser
391391
test_raw = tests[0]

dojo/importers/default_reimporter.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,14 @@ def process_scan(
9090
parser = self.get_parser()
9191
# Get the findings from the parser based on what methods the parser supplies
9292
# This could either mean traditional file parsing, or API pull parsing
93-
self.parsed_findings = self.parse_findings(scan, parser)
93+
parsed_findings = self.parse_findings(scan, parser)
9494
# process the findings in the foreground or background
9595
(
9696
new_findings,
9797
reactivated_findings,
9898
findings_to_mitigate,
9999
untouched_findings,
100-
) = self.determine_process_method(self.parsed_findings, **kwargs)
100+
) = self.determine_process_method(parsed_findings, **kwargs)
101101
# Close any old findings in the processed list if the the user specified for that
102102
# to occur in the form that is then passed to the kwargs
103103
closed_findings = self.close_old_findings(findings_to_mitigate, **kwargs)
@@ -288,13 +288,10 @@ def parse_findings(
288288
`get_tests` function on the parser object
289289
"""
290290
# Attempt any preprocessing before generating findings
291-
if len(self.parsed_findings) == 0 or self.test is None:
292-
scan = self.process_scan_file(scan)
293-
if hasattr(parser, "get_tests"):
294-
self.parsed_findings = self.parse_findings_dynamic_test_type(scan, parser)
295-
else:
296-
self.parsed_findings = self.parse_findings_static_test_type(scan, parser)
297-
return self.parsed_findings
291+
scan = self.process_scan_file(scan)
292+
if hasattr(parser, "get_tests"):
293+
return self.parse_findings_dynamic_test_type(scan, parser)
294+
return self.parse_findings_static_test_type(scan, parser)
298295

299296
def parse_findings_static_test_type(
300297
self,

0 commit comments

Comments
 (0)