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

Function nearest_patched_package

vulnerabilities/utils.py:176–202  ·  view source on GitHub ↗

Return a list of Affected Packages for each Patched package.

(
    vulnerable_packages: List[PackageURL], resolved_packages: List[PackageURL]
)

Source from the content-addressed store, hash-verified

174
175
176def nearest_patched_package(
177 vulnerable_packages: List[PackageURL], resolved_packages: List[PackageURL]
178) -> List[AffectedPackage]:
179 """
180 Return a list of Affected Packages for each Patched package.
181 """
182
183 vulnerable_packages = sorted([VersionedPackage(package) for package in vulnerable_packages])
184 resolved_packages = sorted([VersionedPackage(package) for package in resolved_packages])
185
186 resolved_package_count = len(resolved_packages)
187 affected_package_with_patched_package_objects = []
188
189 for vulnerable_package in vulnerable_packages:
190 patched_package_index = bisect.bisect_right(resolved_packages, vulnerable_package)
191 patched_package = None
192 if patched_package_index < resolved_package_count:
193 patched_package = resolved_packages[patched_package_index]
194
195 affected_package_with_patched_package_objects.append(
196 AffectedPackage(
197 vulnerable_package=vulnerable_package.purl,
198 patched_package=patched_package.purl if patched_package else None,
199 )
200 )
201
202 return affected_package_with_patched_package_objects
203
204
205# TODO: Replace this with combination of @classmethod and @property after upgrading to python 3.9

Callers 4

generate_inferencesMethod · 0.90
_load_advisoryMethod · 0.90
yaml_file_to_advisoryFunction · 0.90

Calls 2

VersionedPackageClass · 0.85
AffectedPackageClass · 0.70

Tested by 1