Skip to content

Commit bf8e120

Browse files
committed
šŸž Vulnerability issue creator fails when Maven report does not contain "vulnerable" entry
Fixes #102
1 parent ef2fffa commit bf8e120

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

ā€Ždoc/changelog.rstā€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
Unreleased
77
==========
88

9+
šŸž Fixed
10+
--------
11+
* Fix failing vulnerability issue creator when Maven report does not contain "vulnerable" entry
12+
913
šŸ”§ Changed
1014
----------
1115

ā€Žexasol/toolbox/tools/security.pyā€Ž

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,17 +87,18 @@ def gh_security_issues() -> Generator[Tuple[str, str], None, None]:
8787
def from_maven(report: str) -> Iterable[Issue]:
8888
# Note: Consider adding warnings if there is the same cve with multiple coordinates
8989
report = json.loads(report)
90-
dependencies = report["vulnerable"] # type: ignore
91-
for _, dependency in dependencies.items(): # type: ignore
92-
for v in dependency["vulnerabilities"]: # type: ignore
93-
references = [v["reference"]] + v["externalReferences"]
94-
yield Issue(
95-
cve=v["cve"],
96-
cwe=v["cwe"],
97-
description=v["description"],
98-
coordinates=dependency["coordinates"],
99-
references=tuple(references),
100-
)
90+
if "vulnerable" in report:
91+
dependencies = report["vulnerable"] # type: ignore
92+
for _, dependency in dependencies.items(): # type: ignore
93+
for v in dependency["vulnerabilities"]: # type: ignore
94+
references = [v["reference"]] + v["externalReferences"]
95+
yield Issue(
96+
cve=v["cve"],
97+
cwe=v["cwe"],
98+
description=v["description"],
99+
coordinates=dependency["coordinates"],
100+
references=tuple(references),
101+
)
101102

102103

103104
def security_issue_title(issue: Issue) -> str:

ā€Žtest/unit/security_test.pyā€Ž

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,3 +354,8 @@ def test_convert_maven_input(maven_report): # pylint: disable=redefined-outer-n
354354
}
355355
actual = set(security.from_maven(maven_report))
356356
assert actual == expected
357+
358+
359+
def test_convert_maven_input_no_vulnerable(): # pylint: disable=redefined-outer-name
360+
actual = set(security.from_maven("{}"))
361+
assert len(actual) == 0

0 commit comments

Comments
Ā (0)