Skip to content

Commit 9ac6fa2

Browse files
committed
Try to make osv.py support multiple ecosystems.
Signed-off-by: Ziad <[email protected]>
1 parent 44f488f commit 9ac6fa2

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

vulnerabilities/importers/osv.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import dateparser
1616
from packageurl import PackageURL
17-
from univers.version_range import PypiVersionRange
17+
from univers.version_range import RANGE_CLASS_BY_SCHEMES
1818
from univers.versions import InvalidVersion
1919
from univers.versions import PypiVersion
2020
from univers.versions import SemverVersion
@@ -31,7 +31,7 @@
3131
logger = logging.getLogger(__name__)
3232

3333

34-
def parse_advisory_data(raw_data: dict) -> Optional[AdvisoryData]:
34+
def parse_advisory_data(raw_data: dict, supported_ecosystem) -> Optional[AdvisoryData]:
3535
raw_id = raw_data.get("id") or ""
3636
summary = raw_data.get("summary") or ""
3737
details = raw_data.get("details") or ""
@@ -56,11 +56,11 @@ def parse_advisory_data(raw_data: dict) -> Optional[AdvisoryData]:
5656

5757
for affected_pkg in raw_data.get("affected") or []:
5858
purl = get_affected_purl(affected_pkg, raw_id)
59-
if purl.type != "pypi":
60-
logger.error(f"Non PyPI package found in PYSEC advisories: {purl} - from: {raw_id !r}")
59+
if purl.type != supported_ecosystem:
60+
logger.error(f"un supported ecosystem package found in the advisories: {purl} - from: {raw_id !r}")
6161
continue
6262

63-
affected_version_range = get_affected_version_range(affected_pkg, raw_id)
63+
affected_version_range = get_affected_version_range(affected_pkg, raw_id, supported_ecosystem)
6464
for fixed_range in affected_pkg.get("ranges", []):
6565
fixed_version = get_fixed_version(fixed_range, raw_id)
6666

@@ -149,11 +149,11 @@ def get_affected_purl(affected_pkg, raw_id):
149149
logger.error(f"purl affected_pkg not found - {raw_id !r}")
150150

151151

152-
def get_affected_version_range(affected_pkg, raw_id):
152+
def get_affected_version_range(affected_pkg, raw_id, supported_ecosystem):
153153
affected_versions = affected_pkg.get("versions")
154154
if affected_versions:
155155
try:
156-
return PypiVersionRange.from_versions(affected_versions)
156+
return RANGE_CLASS_BY_SCHEMES[supported_ecosystem].from_versions(affected_versions)
157157
except Exception as e:
158158
logger.error(
159159
f"InvalidVersionRange affected_pkg_version_range Error - {raw_id !r} {e!r}"

vulnerabilities/importers/pypa.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class PyPaImporter(Importer):
2727

2828
def advisory_data(self) -> Iterable[AdvisoryData]:
2929
for file in fork_and_get_files(self.url):
30-
yield parse_advisory_data(file)
30+
yield parse_advisory_data(file, supported_ecosystem='pypi')
3131

3232

3333
class ForkError(Exception):

vulnerabilities/importers/pysec.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@ def advisory_data(self) -> Iterable[AdvisoryData]:
4141
else:
4242
with zip_file.open(file_name) as f:
4343
vul_info = json.load(f)
44-
yield parse_advisory_data(vul_info)
44+
yield parse_advisory_data(vul_info, supported_ecosystem='pypi')

0 commit comments

Comments
 (0)