Skip to content

Commit b08c66c

Browse files
authored
Merge branch 'main' into collect-package-patch
2 parents 5f06678 + b5a4445 commit b08c66c

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

vulnerabilities/importers/fireeye.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def matcher_url(ref) -> str:
112112
"""
113113
Returns URL of the reference markup from reference url in Markdown format
114114
"""
115-
markup_regex = "\[([^\[]+)]\(\s*(http[s]?://.+)\s*\)"
115+
markup_regex = r"\[([^\[]+)]\(\s*(http[s]?://.+)\s*\)"
116116
matched_markup = re.findall(markup_regex, ref)
117117
if matched_markup:
118118
return matched_markup[0][1]

vulnerabilities/pipelines/v2_importers/fireeye_importer_v2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def matcher_url(ref) -> str:
154154
"""
155155
Returns URL of the reference markup from reference url in Markdown format
156156
"""
157-
markup_regex = "\[([^\[]+)]\(\s*(http[s]?://.+)\s*\)"
157+
markup_regex = r"\[([^\[]+)]\(\s*(http[s]?://.+)\s*\)"
158158
matched_markup = re.findall(markup_regex, ref)
159159
if matched_markup:
160160
return matched_markup[0][1]

vulnerabilities/pipelines/v2_improvers/compute_package_risk.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
# See https://aboutcode.org for more information about nexB OSS projects.
88
#
99
from aboutcode.pipeline import LoopProgress
10+
from django.db.models import Prefetch
11+
from django.db.models import Q
1012

13+
from vulnerabilities.models import AdvisorySeverity
1114
from vulnerabilities.models import AdvisoryV2
1215
from vulnerabilities.models import PackageV2
1316
from vulnerabilities.pipelines import VulnerableCodePipeline
@@ -35,7 +38,15 @@ def steps(cls):
3538
def compute_and_store_vulnerability_risk_score(self):
3639
affected_advisories = (
3740
AdvisoryV2.objects.filter(impacted_packages__affecting_packages__isnull=False)
38-
.prefetch_related("references", "severities", "exploits")
41+
.prefetch_related(
42+
"references",
43+
"severities",
44+
"exploits",
45+
Prefetch(
46+
"related_advisory_severities",
47+
queryset=AdvisoryV2.objects.prefetch_related("severities"),
48+
),
49+
)
3950
.distinct()
4051
)
4152

@@ -50,10 +61,13 @@ def compute_and_store_vulnerability_risk_score(self):
5061
batch_size = 5000
5162

5263
for advisory in progress.iter(affected_advisories.iterator(chunk_size=batch_size)):
53-
severities = advisory.severities.all()
5464
references = advisory.references.all()
5565
exploits = advisory.exploits.all()
5666

67+
severities = AdvisorySeverity.objects.filter(
68+
Q(advisories=advisory) | Q(advisories__related_to_advisory_severities=advisory)
69+
).distinct()
70+
5771
weighted_severity, exploitability = compute_vulnerability_risk_factors(
5872
references=references,
5973
severities=severities,

vulnerabilities/tests/pipelines/v2_improvers/test_relate_severities.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
#
99

1010
import pytest
11+
from django.db.models import Q
1112

13+
from vulnerabilities.models import AdvisorySeverity
1214
from vulnerabilities.models import AdvisoryV2
1315
from vulnerabilities.pipelines.v2_improvers.relate_severities import RelateSeveritiesPipeline
1416
from vulnerabilities.severity_systems import EPSS
@@ -42,6 +44,10 @@ def test_relate_severities_by_advisory_id():
4244
pipeline.relate_severities()
4345

4446
assert base.related_advisory_severities.filter(id=severity_advisory.id).exists()
47+
severities = AdvisorySeverity.objects.filter(
48+
Q(advisories=base) | Q(advisories__related_to_advisory_severities=base)
49+
).distinct()
50+
assert severities.filter(id=severity_advisory.severities.first().id).exists()
4551

4652

4753
@pytest.mark.django_db

0 commit comments

Comments
 (0)