Skip to content

Commit 353b888

Browse files
committed
Continue importing from github on InvalidVersion
1 parent 1ca9ece commit 353b888

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

vulnerabilities/importers/github.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
import asyncio
2424
import os
2525
import dataclasses
26-
import json
26+
import traceback
27+
import logging
28+
2729
from typing import Set
2830
from typing import Tuple
2931
from typing import List
@@ -33,7 +35,7 @@
3335
import requests
3436
from packageurl import PackageURL
3537
from univers.version_specifier import VersionSpecifier
36-
from univers.versions import version_class_by_package_type
38+
from univers.versions import version_class_by_package_type, InvalidVersion
3739

3840
from vulnerabilities.data_source import Advisory
3941
from vulnerabilities.data_source import DataSource
@@ -48,6 +50,8 @@
4850
from vulnerabilities.severity_systems import scoring_systems
4951
from vulnerabilities.helpers import nearest_patched_package
5052

53+
logger = logging.getLogger(__name__)
54+
5155
# set of all possible values of first '%s' = {'MAVEN','COMPOSER', 'NUGET', 'RUBYGEMS', 'PYPI'}
5256
# second '%s' is interesting, it will have the value '' for the first request,
5357
# since we don't have any value for endCursor at the beginning
@@ -265,9 +269,14 @@ def categorize_versions(
265269
affected_versions = []
266270
unaffected_versions = []
267271
for version in all_versions:
268-
if version_class(version) in version_range:
269-
affected_versions.append(version)
270-
else:
271-
unaffected_versions.append(version)
272+
try:
273+
if version_class(version) in version_range:
274+
affected_versions.append(version)
275+
else:
276+
unaffected_versions.append(version)
277+
except InvalidVersion:
278+
logger.error (
279+
f"Failed to parse version: {version!r}:\n" + traceback.format_exc()
280+
)
272281

273282
return (affected_versions, unaffected_versions)

vulnerabilities/tests/test_github.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def tearDown(self):
6363

6464
def test_categorize_versions(self):
6565
eg_version_range = ">= 3.3.0, < 3.3.5"
66-
eg_versions = ["3.3.6", "3.3.0", "3.3.4", "3.2.0"]
66+
eg_versions = ["3.3.6", "3.3.0", "3.3.4", "3.2.0", "0.1-charmander"]
6767

6868
aff_vers, safe_vers = self.data_src.categorize_versions(
6969
"pypi", eg_version_range, eg_versions

0 commit comments

Comments
 (0)