Skip to content

Commit 8c4876d

Browse files
committed
Store summary in _insert_vulnerabilities_and_references()
Bugfix: For advisories with a CVE ID that don't exist in the database yet, the summary was not stored. Signed-off-by: Haiko Schol <hs@haikoschol.com>
1 parent aded87c commit 8c4876d

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

vulnerabilities/import_runner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ def _insert_vulnerabilities_and_references(batch: Set[Advisory]) -> Set[models.V
258258

259259
if advisory.cve_id:
260260
vuln, created = models.Vulnerability.objects.get_or_create(cve_id=advisory.cve_id)
261-
if created and vuln.summary:
261+
if created and advisory.summary:
262262
vuln.summary = advisory.summary
263263
vuln.save()
264264
else:

vulnerabilities/tests/test_import_runner.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from vulnerabilities.data_source import DataSource
3030
from vulnerabilities.data_source import PackageURL
3131
from vulnerabilities.import_runner import ImportRunner
32+
from vulnerabilities.import_runner import _insert_vulnerabilities_and_references
3233

3334

3435
class MockDataSource(DataSource):
@@ -197,12 +198,12 @@ def test_ImportRunner_new_package_version_affected_by_existing_vulnerability(db)
197198
assert impacted_package.vulnerability.cve_id == 'MOCK-CVE-2020-1337'
198199

199200

200-
def test_ImportRunner_assumed_fixed_package_is_updated_as_impacted(db):
201-
"""
202-
A version of a package existing in the database that was assumed to be fixed was found to still
203-
be affected by a vulnerability that also already existed in the database (i.e. the previously
204-
stored data was corrected).
205-
"""
201+
# def test_ImportRunner_assumed_fixed_package_is_updated_as_impacted(db):
202+
# """
203+
# A version of a package existing in the database that was assumed to be fixed was found to
204+
# still be affected by a vulnerability that also already existed in the database (i.e. the
205+
# previously stored data was corrected).
206+
# """
206207
# FIXME This case is not supported due to cascading deletes. When the ResolvedPackage is
207208
# FIXME deleted, the referenced Package and Vulnerability are also deleted.
208209
#
@@ -317,3 +318,16 @@ def test_ImportRunner_updated_vulnerability(db):
317318
vuln_refs = models.VulnerabilityReference.objects.filter(vulnerability=vuln)
318319
assert vuln_refs.count() == 1
319320
assert vuln_refs[0].url == 'https://example.com/with/more/info/MOCK-CVE-2020-1337'
321+
322+
323+
def test_insert_vulnerabilities_and_references_stores_summary(db):
324+
advisory = Advisory(
325+
summary='vulnerability description here',
326+
cve_id='MOCK-CVE-2020-1337',
327+
impacted_package_urls=[PackageURL(name='mock-webserver', type='pypi', version='1.2.33a')],
328+
)
329+
330+
_insert_vulnerabilities_and_references({advisory})
331+
332+
vuln = models.Vulnerability.objects.get(cve_id=advisory.cve_id)
333+
assert vuln.summary == advisory.summary

0 commit comments

Comments
 (0)