Skip to content

Commit a785ed6

Browse files
committed
Apply suggestions from code review
Signed-off-by: Tushar Goel <[email protected]>
1 parent 704b9a9 commit a785ed6

File tree

7 files changed

+49
-32
lines changed

7 files changed

+49
-32
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Next release
77

88
- We re-enabled support for the mozilla vulnerabilities advisories importer.
99
- We re-enabled support for the gentoo vulnerabilities advisories importer.
10+
- We re-enabled support for the istio vulnerabilities advisories importer.
1011

1112

1213
Version v31.1.1

vulnerabilities/importers/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
from vulnerabilities.importers import gentoo
1616
from vulnerabilities.importers import github
1717
from vulnerabilities.importers import gitlab
18-
from vulnerabilities.importers import mozilla
1918
from vulnerabilities.importers import istio
19+
from vulnerabilities.importers import mozilla
2020
from vulnerabilities.importers import nginx
2121
from vulnerabilities.importers import npm
2222
from vulnerabilities.importers import nvd

vulnerabilities/importers/istio.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -59,28 +59,28 @@ def process_file(self, path):
5959
for release in data.get("releases") or []:
6060
# If it is of form "All releases prior to x"
6161
if "All releases prior" in release:
62-
release = release.strip()
63-
release = release.split(" ")
62+
_, _, release = release.strip().rpartition(" ")
6463
constraints.append(
65-
VersionConstraint(version=SemverVersion(release[4]), comparator="<")
64+
VersionConstraint(version=SemverVersion(release), comparator="<")
6665
)
6766

6867
# Eg. 'All releases 1.5 and later'
6968
elif "All releases" in release and "and later" in release:
70-
release = release.split()[2].strip()
69+
# remove All releases from string
70+
release = release.replace("All releases", "").strip()
71+
# remove and later from string
72+
release = release.replace("and later", "").strip()
73+
if not is_release(release):
74+
continue
7175
constraints.append(
72-
VersionConstraint(version=SemverVersion(release), comparator=">")
76+
VersionConstraint(version=SemverVersion(release), comparator=">=")
7377
)
7478

79+
# Eg. 1.5 to 2.0
7580
elif "to" in release:
76-
release = release.strip()
77-
release = release.split(" ")
78-
constraints.append(
79-
VersionConstraint(version=SemverVersion(release[0]), comparator=">=")
80-
)
81-
constraints.append(
82-
VersionConstraint(version=SemverVersion(release[2]), comparator="<=")
83-
)
81+
lower, _, upper = release.strip().partition("to")
82+
constraints.append(VersionConstraint(version=SemverVersion(lower), comparator=">="))
83+
constraints.append(VersionConstraint(version=SemverVersion(upper), comparator="<="))
8484

8585
# If it is a single release
8686
elif is_release(release):
@@ -95,19 +95,20 @@ def process_file(self, path):
9595

9696
affected_packages = []
9797

98-
affected_packages.append(
99-
AffectedPackage(
100-
package=PackageURL(type="golang", name="istio"),
101-
affected_version_range=GolangVersionRange(constraints=constraints),
98+
if constraints:
99+
affected_packages.append(
100+
AffectedPackage(
101+
package=PackageURL(type="golang", namespace="istio.io", name="istio"),
102+
affected_version_range=GolangVersionRange(constraints=constraints),
103+
)
102104
)
103-
)
104105

105-
affected_packages.append(
106-
AffectedPackage(
107-
package=PackageURL(type="github", name="istio"),
108-
affected_version_range=GitHubVersionRange(constraints=constraints),
106+
affected_packages.append(
107+
AffectedPackage(
108+
package=PackageURL(type="github", namespace="istio", name="istio"),
109+
affected_version_range=GitHubVersionRange(constraints=constraints),
110+
)
109111
)
110-
)
111112

112113
title = data.get("title") or ""
113114
references = []

vulnerabilities/improvers/default.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,25 @@ def get_inferences(self, advisory_data: AdvisoryData) -> Iterable[Inference]:
4646
for affected_package in advisory_data.affected_packages:
4747
# To deal with multiple fixed versions in a single affected package
4848
affected_purls, fixed_purls = get_exact_purls(affected_package)
49-
for fixed_purl in fixed_purls:
49+
if not fixed_purls:
5050
yield Inference(
5151
aliases=advisory_data.aliases,
5252
confidence=MAX_CONFIDENCE,
5353
summary=advisory_data.summary,
5454
affected_purls=affected_purls,
55-
fixed_purl=fixed_purl,
55+
fixed_purl=None,
5656
references=advisory_data.references,
5757
)
58+
else:
59+
for fixed_purl in fixed_purls or []:
60+
yield Inference(
61+
aliases=advisory_data.aliases,
62+
confidence=MAX_CONFIDENCE,
63+
summary=advisory_data.summary,
64+
affected_purls=affected_purls,
65+
fixed_purl=fixed_purl,
66+
references=advisory_data.references,
67+
)
5868

5969
else:
6070
yield Inference.from_advisory_data(

vulnerabilities/tests/test_data/istio/istio-expected.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,25 @@
88
{
99
"package": {
1010
"type": "golang",
11-
"namespace": null,
11+
"namespace": "istio.io",
1212
"name": "istio",
1313
"version": null,
1414
"qualifiers": null,
1515
"subpath": null
1616
},
17-
"affected_version_range": "vers:golang/>=1.1.0|<=1.1.15|>=1.2.0|<=1.2.6|>=1.3.0|<=1.3.1",
17+
"affected_version_range": "vers:golang/<0.0.9|>=1.1.0|<=1.1.15|>=1.3.0|<=1.3.1|>=1.5.0",
1818
"fixed_version": null
1919
},
2020
{
2121
"package": {
2222
"type": "github",
23-
"namespace": null,
23+
"namespace": "istio",
2424
"name": "istio",
2525
"version": null,
2626
"qualifiers": null,
2727
"subpath": null
2828
},
29-
"affected_version_range": "vers:github/>=1.1.0|<=1.1.15|>=1.2.0|<=1.2.6|>=1.3.0|<=1.3.1",
29+
"affected_version_range": "vers:github/<0.0.9|>=1.1.0|<=1.1.15|>=1.3.0|<=1.3.1|>=1.5.0",
3030
"fixed_version": null
3131
}
3232
],

vulnerabilities/tests/test_data/istio/test_file.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Incorrect access control.
55
cves: [CVE-2019-12243]
66
cvss: "8.9"
77
vector: "CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N/E:H/RL:O/RC:C"
8-
releases: ["1.1 to 1.1.15", "1.2 to 1.2.6", "1.3 to 1.3.1"]
8+
releases: ["All releases prior to 0.0.9","1.1 to 1.1.15","1.3 to 1.3.1", "All releases 1.5.0 and later"]
99
publishdate: 2019-05-28
1010

1111
---

vulnerabilities/tests/test_istio.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ def test_istio_get_data_from_md():
2626
"cves": ["CVE-2019-12243"],
2727
"cvss": "8.9",
2828
"vector": "CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N/E:H/RL:O/RC:C",
29-
"releases": ["1.1 to 1.1.15", "1.2 to 1.2.6", "1.3 to 1.3.1"],
29+
"releases": [
30+
"All releases prior to 0.0.9",
31+
"1.1 to 1.1.15",
32+
"1.3 to 1.3.1",
33+
"All releases 1.5.0 and later",
34+
],
3035
"publishdate": "2019-05-28",
3136
}
3237

0 commit comments

Comments
 (0)