Skip to content

Commit fb4cc9c

Browse files
committed
Address review comments
Signed-off-by: Tushar Goel <[email protected]>
1 parent c5ad76a commit fb4cc9c

File tree

2 files changed

+19
-24
lines changed

2 files changed

+19
-24
lines changed

vulnerabilities/pipelines/v2_improvers/compute_advisory_todo.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from vulnerabilities.models import AdvisoryV2
1919
from vulnerabilities.models import ToDoRelatedAdvisoryV2
2020
from vulnerabilities.pipelines import VulnerableCodePipeline
21-
from vulnerabilities.pipes.advisory import advisories_checksum_v2
21+
from vulnerabilities.pipes.advisory import advisories_checksum
2222

2323

2424
class ComputeToDo(VulnerableCodePipeline):
@@ -36,7 +36,9 @@ def steps(cls):
3636
def compute_individual_advisory_todo(self):
3737
"""Create ToDos for missing summary, affected and fixed packages."""
3838

39-
advisories = AdvisoryV2.objects.all()
39+
advisories = AdvisoryV2.objects.all().prefetch_related(
40+
"impacted_packages",
41+
)
4042
advisories_count = advisories.count()
4143
advisory_relation_to_create = {}
4244
todo_to_create = []
@@ -52,7 +54,7 @@ def compute_individual_advisory_todo(self):
5254
progress_step=1,
5355
)
5456
for advisory in progress.iter(advisories.iterator(chunk_size=5000)):
55-
advisory_todo_id = advisories_checksum_v2(advisories=advisory)
57+
advisory_todo_id = advisories_checksum(advisories=advisory)
5658
check_missing_summary(
5759
advisory=advisory,
5860
todo_id=advisory_todo_id,
@@ -106,9 +108,15 @@ def detect_conflicting_advisories(self):
106108
progress_step=1,
107109
)
108110
for alias in progress.iter(aliases.iterator(chunk_size=2000)):
109-
advisories = alias.advisories.exclude(
110-
advisory_todos__issue_type="MISSING_AFFECTED_AND_FIXED_BY_PACKAGES"
111-
).distinct()
111+
advisories = (
112+
alias.advisories.exclude(
113+
advisory_todos__issue_type="MISSING_AFFECTED_AND_FIXED_BY_PACKAGES"
114+
)
115+
.distinct()
116+
.prefetch_related(
117+
"impacted_packages",
118+
)
119+
)
112120

113121
check_conflicting_affected_and_fixed_by_packages_for_alias(
114122
advisories=advisories,
@@ -245,9 +253,7 @@ def check_conflicting_affected_and_fixed_by_packages_for_alias(
245253
for advisory in advisories:
246254
advisory_id = advisory.unique_content_id
247255
for impacted in advisory.impacted_packages.all() or []:
248-
if not impacted:
249-
continue
250-
affected_purl = str(impacted.base_purl)
256+
affected_purl = impacted.base_purl
251257

252258
initialize_sub_matrix(
253259
matrix=matrix,
@@ -276,10 +282,10 @@ def check_conflicting_affected_and_fixed_by_packages_for_alias(
276282
messages.append(
277283
f"{cve}: {purl} with conflicting affected versions {unique_set_of_affected_vers}"
278284
)
279-
if len(unique_set_of_fixed_versions) > 1:
285+
if len(unique_set_of_fixed_vers) > 1:
280286
has_conflicting_fixed_package = True
281287
messages.append(
282-
f"{cve}: {purl} with conflicting fixed version {unique_set_of_fixed_versions}"
288+
f"{cve}: {purl} with conflicting fixed version {unique_set_of_fixed_vers}"
283289
)
284290

285291
if not has_conflicting_affected_packages and not has_conflicting_fixed_package:
@@ -296,7 +302,7 @@ def check_conflicting_affected_and_fixed_by_packages_for_alias(
296302
"Conflict matrix": matrix,
297303
}
298304

299-
todo_id = advisories_checksum_v2(advisories)
305+
todo_id = advisories_checksum(advisories)
300306
todo = AdvisoryToDoV2(
301307
related_advisories_id=todo_id,
302308
issue_type=issue_type,

vulnerabilities/pipes/advisory.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -327,18 +327,7 @@ def import_advisory(
327327

328328

329329
def advisories_checksum(advisories: Union[Advisory, List[Advisory]]) -> str:
330-
if isinstance(advisories, Advisory):
331-
advisories = [advisories]
332-
333-
contents = sorted([advisory.unique_content_id for advisory in advisories])
334-
combined_contents = "".join(contents)
335-
336-
checksum = hashlib.sha1(combined_contents.encode())
337-
return checksum.hexdigest()
338-
339-
340-
def advisories_checksum_v2(advisories: Union[AdvisoryV2, List[AdvisoryV2]]) -> str:
341-
if isinstance(advisories, AdvisoryV2):
330+
if isinstance(advisories, Advisory) or isinstance(advisories, AdvisoryV2):
342331
advisories = [advisories]
343332

344333
contents = sorted([advisory.unique_content_id for advisory in advisories])

0 commit comments

Comments
 (0)