Skip to content

Commit c1b2526

Browse files
🎉 add fix_available and fix_version to govulncheck (#14681)
1 parent 9d661d7 commit c1b2526

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

dojo/tools/govulncheck/parser.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,22 @@ def get_location(data, node):
4040
def get_version(data, node):
4141
return data["Requires"]["Modules"][str(node)]["Version"]
4242

43+
@staticmethod
44+
def get_fix_info(affected_ranges):
45+
for r in affected_ranges:
46+
for event in r.get("events", []):
47+
if "fixed" in event:
48+
return True, event["fixed"]
49+
return False, ""
50+
51+
@staticmethod
52+
def get_introduced_version(affected_ranges):
53+
for r in affected_ranges:
54+
for event in r.get("events", []):
55+
if "introduced" in event:
56+
return event["introduced"]
57+
return ""
58+
4359
def get_finding_trace_info(self, data, osv_id):
4460
# Browse the findings to look for matching OSV-id. If the OSV-id is matching, extract traces.
4561
trace_info_strs = []
@@ -202,8 +218,12 @@ def get_findings(self, scan_file, test):
202218
else:
203219
title = f"{osv_data['id']} - {affected_package['name']}"
204220

205-
affected_version = self.get_affected_version(data, osv_data["id"])
221+
fix_available, fix_version = self.get_fix_info(affected_ranges)
206222

223+
affected_version = (
224+
self.get_affected_version(data, osv_data["id"])
225+
or self.get_introduced_version(affected_ranges)
226+
)
207227
severity = elem["osv"].get("severity", SEVERITY)
208228

209229
d = {
@@ -215,6 +235,8 @@ def get_findings(self, scan_file, test):
215235
"description": description,
216236
"impact": impact,
217237
"references": references,
238+
"fix_available": fix_available,
239+
"fix_version": fix_version,
218240
"file_path": path,
219241
"url": db_specific_url,
220242
"unique_id_from_tool": osv_id,

unittests/tools/test_govulncheck_parser.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ def test_parse_new_version_many_findings_custom_severity(self):
127127
self.assertIsNotNone(finding.impact)
128128
self.assertIsNotNone(finding.description)
129129
self.assertIsNotNone(finding.references)
130+
self.assertTrue(finding.fix_available)
131+
self.assertEqual("0.3.8", finding.fix_version)
130132

131133
def test_parse_issue_14642(self):
132134
with (get_unit_tests_scans_path("govulncheck") / "issue_14642.json").open(encoding="utf-8") as testfile:

0 commit comments

Comments
 (0)