Skip to content

Commit be28af3

Browse files
committed
Check empty published_at before using #1541
Otherwise the VulnerabilitySeverity.published_at data will be an invalid "None" string. Reference: #1541 Signed-off-by: Philippe Ombredanne <[email protected]>
1 parent da723ea commit be28af3

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

vulnerabilities/import_runner.py

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,23 @@ def do_import(self, advisories) -> None:
7070
if advisory.date_imported:
7171
continue
7272
logger.info(f"Processing advisory: {advisory!r}")
73+
advisory_data = None
74+
inferences = None
7375
try:
74-
inferences = advisory_importer.get_inferences(
75-
advisory_data=advisory.to_advisory_data()
76-
)
76+
advisory_data = advisory.to_advisory_data()
77+
inferences = advisory_importer.get_inferences(advisory_data=advisory_data)
7778
process_inferences(
7879
inferences=inferences,
7980
advisory=advisory,
8081
improver_name=importer_name,
8182
)
82-
except Exception as e:
83-
logger.info(f"Failed to process advisory: {advisory!r} with error {e!r}")
83+
except Exception:
84+
from pprint import pformat
85+
86+
logger.warning(
87+
f"Failed to process advisory:\n{pformat(advisory_data.to_dict())}\n\n"
88+
f"with error:\n{traceback_format_exc()}\n\n"
89+
)
8490
logger.info("Finished importing using %s.", advisory_importer.__class__.qualified_name)
8591

8692
def process_advisories(
@@ -181,17 +187,23 @@ def process_inferences(inferences: List[Inference], advisory: Advisory, improver
181187
reference=reference,
182188
vulnerability=vulnerability,
183189
)
184-
190+
updated = False
185191
for severity in ref.severities:
186-
_vs, updated = VulnerabilitySeverity.objects.update_or_create(
187-
scoring_system=severity.system.identifier,
188-
reference=reference,
189-
defaults={
190-
"value": str(severity.value),
191-
"scoring_elements": str(severity.scoring_elements),
192-
"published_at": str(severity.published_at),
193-
},
194-
)
192+
try:
193+
published_at = str(severity.published_at) if severity.published_at else None
194+
_vs, updated = VulnerabilitySeverity.objects.update_or_create(
195+
scoring_system=severity.system.identifier,
196+
reference=reference,
197+
defaults={
198+
"value": str(severity.value),
199+
"scoring_elements": str(severity.scoring_elements),
200+
"published_at": published_at,
201+
},
202+
)
203+
except:
204+
logger.error(
205+
f"Failed to create VulnerabilitySeverity for: {severity} with error:\n{traceback_format_exc()}"
206+
)
195207
if updated:
196208
logger.info(
197209
f"Severity updated for reference {ref!r} to value: {severity.value!r} "

0 commit comments

Comments
 (0)