Skip to content

Commit 60f667f

Browse files
committed
Update the pipeline to run once
Update advisory_id Simplify grouped_packages structure Signed-off-by: ziad hany <ziadhany2016@gmail.com>
1 parent fc88a43 commit 60f667f

File tree

2 files changed

+38
-40
lines changed

2 files changed

+38
-40
lines changed

vulnerabilities/pipelines/v2_importers/retiredotnet_importer.py

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

1010
import json
11-
import operator
1211
import re
13-
from itertools import groupby
12+
from collections import defaultdict
1413
from pathlib import Path
1514

1615
from fetchcode.vcs import fetch_via_vcs
@@ -29,6 +28,7 @@ class RetireDotnetImporterPipeline(VulnerableCodeBaseImporterPipelineV2):
2928
spdx_license_expression = "MIT"
3029
repo_url = "git+https://github.com/RetireNet/Packages/"
3130
pipeline_id = "retiredotnet_importer_v2"
31+
run_once = True
3232

3333
@classmethod
3434
def steps(cls):
@@ -52,7 +52,7 @@ def collect_advisories(self):
5252
affected_packages = []
5353

5454
for file in vuln.glob("*.json"):
55-
advisory_id = "RetireNet-" + file.stem
55+
advisory_id = "retiredotnet-" + file.stem
5656
advisory_url = get_advisory_url(
5757
file=file,
5858
base_path=base_path,
@@ -64,40 +64,38 @@ def collect_advisories(self):
6464
aliases = self.vuln_id_from_desc(description)
6565

6666
# group by package name `id`
67-
packages = json_doc.get("packages") or []
68-
key_func = operator.itemgetter("id")
69-
packages.sort(key=key_func)
70-
grouped_packages = groupby(packages, key=key_func)
71-
72-
for key, group in grouped_packages:
73-
affected_versions = []
74-
fixed_versions = []
75-
76-
for pkg in list(group):
77-
name = pkg.get("id")
78-
if not name:
79-
continue
67+
# { pkg_id: {'affected_versions': [], 'fixed': []} }
68+
grouped_packages = defaultdict(
69+
lambda: {"affected_versions": [], "fixed_versions": []}
70+
)
71+
for pkg in json_doc.get("packages") or []:
72+
name = pkg.get("id")
73+
if not name:
74+
continue
8075

81-
affected_version = pkg.get("affected")
82-
if affected_version:
83-
affected_versions.append(affected_version)
76+
affected_version = pkg.get("affected")
77+
if affected_version:
78+
grouped_packages[name]["affected_versions"].append(affected_version)
8479

85-
fixed_version = pkg.get("fix")
86-
if fixed_version:
87-
fixed_versions.append(fixed_version)
80+
fixed_version = pkg.get("fix")
81+
if fixed_version:
82+
grouped_packages[name]["fixed_versions"].append(fixed_version)
8883

84+
for pkg in grouped_packages:
8985
affected_version_range = None
86+
affected_versions = grouped_packages[pkg]["affected_versions"]
9087
if affected_versions:
9188
affected_version_range = NugetVersionRange.from_versions(affected_versions)
9289

9390
fixed_version_range = None
91+
fixed_versions = grouped_packages[pkg]["fixed_versions"]
9492
if fixed_versions:
9593
fixed_version_range = NugetVersionRange.from_versions(affected_versions)
9694

9795
if affected_version_range or fixed_version_range:
9896
affected_packages.append(
9997
AffectedPackageV2(
100-
package=PackageURL(type="nuget", name=name),
98+
package=PackageURL(type="nuget", name=pkg),
10199
affected_version_range=affected_version_range,
102100
fixed_version_range=fixed_version_range,
103101
)

vulnerabilities/tests/test_data/retiredotnet_v2/expected_file.json

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[
22
{
3-
"advisory_id": "RetireNet-12",
3+
"advisory_id": "retiredotnet-12",
44
"aliases": [
55
"CVE-2019-0564"
66
],
@@ -10,63 +10,63 @@
1010
"package": {
1111
"type": "nuget",
1212
"namespace": "",
13-
"name": "Microsoft.AspNetCore.All",
13+
"name": "Microsoft.AspNetCore.WebSockets",
1414
"version": "",
1515
"qualifiers": "",
1616
"subpath": ""
1717
},
18-
"affected_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3|2.1.4|2.1.5|2.1.6|2.2.0",
19-
"fixed_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3|2.1.4|2.1.5|2.1.6|2.2.0",
18+
"affected_version_range": "vers:nuget/2.1.0|2.1.1|2.2.0",
19+
"fixed_version_range": "vers:nuget/2.1.0|2.1.1|2.2.0",
2020
"introduced_by_commit_patches": [],
2121
"fixed_by_commit_patches": []
2222
},
2323
{
2424
"package": {
2525
"type": "nuget",
2626
"namespace": "",
27-
"name": "Microsoft.AspNetCore.App",
27+
"name": "Microsoft.AspNetCore.Server.Kestrel.Core",
2828
"version": "",
2929
"qualifiers": "",
3030
"subpath": ""
3131
},
32-
"affected_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3|2.1.4|2.1.5|2.1.6|2.2.0",
33-
"fixed_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3|2.1.4|2.1.5|2.1.6|2.2.0",
32+
"affected_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3",
33+
"fixed_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3",
3434
"introduced_by_commit_patches": [],
3535
"fixed_by_commit_patches": []
3636
},
3737
{
3838
"package": {
3939
"type": "nuget",
4040
"namespace": "",
41-
"name": "Microsoft.AspNetCore.Server.Kestrel.Core",
41+
"name": "System.Net.WebSockets.WebSocketProtocol",
4242
"version": "",
4343
"qualifiers": "",
4444
"subpath": ""
4545
},
46-
"affected_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3",
47-
"fixed_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3",
46+
"affected_version_range": "vers:nuget/4.5.0|4.5.1|4.5.2",
47+
"fixed_version_range": "vers:nuget/4.5.0|4.5.1|4.5.2",
4848
"introduced_by_commit_patches": [],
4949
"fixed_by_commit_patches": []
5050
},
5151
{
5252
"package": {
5353
"type": "nuget",
5454
"namespace": "",
55-
"name": "Microsoft.AspNetCore.WebSockets",
55+
"name": "Microsoft.NETCore.App",
5656
"version": "",
5757
"qualifiers": "",
5858
"subpath": ""
5959
},
60-
"affected_version_range": "vers:nuget/2.1.0|2.1.1|2.2.0",
61-
"fixed_version_range": "vers:nuget/2.1.0|2.1.1|2.2.0",
60+
"affected_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3|2.1.4|2.1.5|2.1.6|2.2.0",
61+
"fixed_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3|2.1.4|2.1.5|2.1.6|2.2.0",
6262
"introduced_by_commit_patches": [],
6363
"fixed_by_commit_patches": []
6464
},
6565
{
6666
"package": {
6767
"type": "nuget",
6868
"namespace": "",
69-
"name": "Microsoft.NETCore.App",
69+
"name": "Microsoft.AspNetCore.App",
7070
"version": "",
7171
"qualifiers": "",
7272
"subpath": ""
@@ -80,13 +80,13 @@
8080
"package": {
8181
"type": "nuget",
8282
"namespace": "",
83-
"name": "System.Net.WebSockets.WebSocketProtocol",
83+
"name": "Microsoft.AspNetCore.All",
8484
"version": "",
8585
"qualifiers": "",
8686
"subpath": ""
8787
},
88-
"affected_version_range": "vers:nuget/4.5.0|4.5.1|4.5.2",
89-
"fixed_version_range": "vers:nuget/4.5.0|4.5.1|4.5.2",
88+
"affected_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3|2.1.4|2.1.5|2.1.6|2.2.0",
89+
"fixed_version_range": "vers:nuget/2.1.0|2.1.1|2.1.2|2.1.3|2.1.4|2.1.5|2.1.6|2.2.0",
9090
"introduced_by_commit_patches": [],
9191
"fixed_by_commit_patches": []
9292
}

0 commit comments

Comments
 (0)