MCPcopy Create free account
hub / github.com/aboutcode-org/vulnerablecode / process_file

Method process_file

vulnerabilities/importers/istio.py:64–149  ·  view source on GitHub ↗
(self, file, base_path)

Source from the content-addressed store, hash-verified

62 self.vcs_response.delete()
63
64 def process_file(self, file, base_path):
65 advisory_url = get_advisory_url(
66 file, base_path, url="https://github.com/istio/istio.io/blob/master/"
67 )
68 data = self.get_data_from_md(file)
69 published_date = data.get("publishdate")
70 release_date = None
71 if published_date:
72 release_date = parser.parse(published_date).replace(tzinfo=pytz.UTC)
73
74 constraints = []
75
76 for release in data.get("releases") or []:
77 # If it is of form "All releases prior to x"
78 if "All releases prior" in release:
79 _, _, release = release.strip().rpartition(" ")
80 constraints.append(
81 VersionConstraint(version=SemverVersion(release), comparator="<")
82 )
83
84 # Eg. 'All releases 1.5 and later'
85 elif "All releases" in release and "and later" in release:
86 # remove All releases from string
87 release = release.replace("All releases", "").strip()
88 # remove and later from string
89 release = release.replace("and later", "").strip()
90 if not is_release(release):
91 continue
92 constraints.append(
93 VersionConstraint(version=SemverVersion(release), comparator=">=")
94 )
95
96 # Eg. 1.5 to 2.0
97 elif "to" in release:
98 lower, _, upper = release.strip().partition("to")
99 constraints.append(VersionConstraint(version=SemverVersion(lower), comparator=">="))
100 constraints.append(VersionConstraint(version=SemverVersion(upper), comparator="<="))
101
102 # If it is a single release
103 elif is_release(release):
104 constraints.append(
105 VersionConstraint(version=SemverVersion(release), comparator="=")
106 )
107
108 for cve_id in data.get("cves") or []:
109
110 if not cve_id.startswith("CVE"):
111 continue
112
113 affected_packages = []
114
115 if constraints:
116 affected_packages.append(
117 AffectedPackage(
118 package=PackageURL(type="golang", namespace="istio.io", name="istio"),
119 affected_version_range=GolangVersionRange(constraints=constraints),
120 )
121 )

Callers 4

advisory_dataMethod · 0.95
test_istio_process_fileFunction · 0.45
test_gentoo_importFunction · 0.45
test_elixir_process_fileFunction · 0.45

Calls 7

get_data_from_mdMethod · 0.95
get_advisory_urlFunction · 0.90
AffectedPackageClass · 0.90
ReferenceClass · 0.90
AdvisoryDataClass · 0.90
getMethod · 0.45
parseMethod · 0.45

Tested by 3

test_istio_process_fileFunction · 0.36
test_gentoo_importFunction · 0.36
test_elixir_process_fileFunction · 0.36