Skip to content

Commit 70ac4cd

Browse files
committed
use dephell_specifier for version ranges and sort imports
Signed-off-by: Tushar912 <tushar.912u@gmail.com>
1 parent 38ec05f commit 70ac4cd

3 files changed

Lines changed: 30 additions & 38 deletions

File tree

vulnerabilities/importers/__init__.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,25 @@
2222

2323

2424
from vulnerabilities.importers.alpine_linux import AlpineDataSource
25+
from vulnerabilities.importers.apache_httpd import ApacheHTTPDDataSource
2526
from vulnerabilities.importers.archlinux import ArchlinuxDataSource
2627
from vulnerabilities.importers.debian import DebianDataSource
27-
from vulnerabilities.importers.npm import NpmDataSource
28-
from vulnerabilities.importers.rust import RustDataSource
29-
from vulnerabilities.importers.safety_db import SafetyDbDataSource
30-
from vulnerabilities.importers.ruby import RubyDataSource
31-
from vulnerabilities.importers.ubuntu import UbuntuDataSource
32-
from vulnerabilities.importers.retiredotnet import RetireDotnetDataSource
33-
from vulnerabilities.importers.suse_backports import SUSEBackportsDataSource
3428
from vulnerabilities.importers.debian_oval import DebianOvalDataSource
35-
from vulnerabilities.importers.redhat import RedhatDataSource
29+
from vulnerabilities.importers.elixir_security import ElixirSecurityDataSource
3630
from vulnerabilities.importers.gentoo import GentooDataSource
37-
from vulnerabilities.importers.openssl import OpenSSLDataSource
38-
from vulnerabilities.importers.ubuntu_usn import UbuntuUSNDataSource
3931
from vulnerabilities.importers.github import GitHubAPIDataSource
40-
from vulnerabilities.importers.nvd import NVDDataSource
41-
from vulnerabilities.importers.project_kb_msr2019 import ProjectKBMSRDataSource
42-
from vulnerabilities.importers.apache_httpd import ApacheHTTPDDataSource
4332
from vulnerabilities.importers.kaybee import KaybeeDataSource
4433
from vulnerabilities.importers.nginx import NginxDataSource
34+
from vulnerabilities.importers.npm import NpmDataSource
35+
from vulnerabilities.importers.nvd import NVDDataSource
36+
from vulnerabilities.importers.openssl import OpenSSLDataSource
4537
from vulnerabilities.importers.postgresql import PostgreSQLDataSource
46-
from vulnerabilities.importers.elixir_security import ElixirSecurityDataSource
38+
from vulnerabilities.importers.project_kb_msr2019 import ProjectKBMSRDataSource
39+
from vulnerabilities.importers.redhat import RedhatDataSource
40+
from vulnerabilities.importers.retiredotnet import RetireDotnetDataSource
41+
from vulnerabilities.importers.ruby import RubyDataSource
42+
from vulnerabilities.importers.rust import RustDataSource
43+
from vulnerabilities.importers.safety_db import SafetyDbDataSource
44+
from vulnerabilities.importers.suse_backports import SUSEBackportsDataSource
45+
from vulnerabilities.importers.ubuntu import UbuntuDataSource
46+
from vulnerabilities.importers.ubuntu_usn import UbuntuUSNDataSource

vulnerabilities/importers/elixir_security.py

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2017 nexB Inc. and others. All rights reserved.
1+
# Copyright (c) nexB Inc. and others. All rights reserved.
22
# http://nexb.com and https://github.com/nexB/vulnerablecode/
33
# The VulnerableCode software is licensed under the Apache License version 2.0.
44
# Data generated with VulnerableCode require an acknowledgment.
@@ -26,7 +26,7 @@
2626
import requests
2727
from typing import Set
2828
from typing import List
29-
29+
from dephell_specifier import RangeSpecifier
3030
from packageurl import PackageURL
3131

3232
from vulnerabilities.data_source import GitDataSource
@@ -63,32 +63,24 @@ def added_advisories(self) -> Set[Advisory]:
6363
return self.batch_advisories(advisories)
6464

6565
@staticmethod
66-
def generate_all_versions_list(pkg_name):
66+
def generate_all_version_list(pkg_name):
6767
resp = requests.get(f"https://hex.pm/api/packages/{pkg_name}")
6868
resp = resp.content
6969
json_resp = json.loads(resp)
70-
versions_list = []
70+
version_list = []
7171
for release in json_resp["releases"]:
72-
versions_list.append(release["version"])
73-
return versions_list
72+
version_list.append(release["version"])
73+
return version_list
7474

75-
def get_pkg_from_range(self, versions_list, pkg_name):
75+
def get_pkg_from_range(self, version_list, pkg_name):
7676
pkg_versions = []
77-
all_versions_list = self.generate_all_versions_list(pkg_name)
78-
if versions_list is None:
77+
all_version_list = self.generate_all_version_list(pkg_name)
78+
if version_list is None:
7979
return
80-
for version in versions_list:
81-
if re.match("^>=", version):
82-
index = all_versions_list.index(version[3:])
83-
pkg_versions = pkg_versions + all_versions_list[0: index + 1]
84-
elif re.match("^>", version):
85-
index = all_versions_list.index(version[2:])
86-
pkg_versions = pkg_versions + all_versions_list[0:index]
87-
elif re.match("^<", version):
88-
index = all_versions_list.index(version[2:])
89-
pkg_versions = pkg_versions + all_versions_list[index + 1: -1]
90-
else:
91-
pkg_versions.append(version[3:])
80+
version_ranges = {RangeSpecifier(r) for r in version_list}
81+
for version in all_version_list:
82+
if any([version in v for v in version_ranges]):
83+
pkg_versions.append(version)
9284
return pkg_versions
9385

9486
def process_file(self, path):

vulnerabilities/tests/test_elixir_security.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2017 nexB Inc. and others. All rights reserved.
1+
# Copyright (c) nexB Inc. and others. All rights reserved.
22
# http://nexb.com and https://github.com/nexB/vulnerablecode/
33
# The VulnerableCode software is licensed under the Apache License version 2.0.
44
# Data generated with VulnerableCode require an acknowledgment.
@@ -41,9 +41,9 @@ def setUpClass(cls):
4141
}
4242
cls.data_src = ElixirSecurityDataSource(1, config=data_source_cfg)
4343

44-
def test_generate_all_versions_list(self):
44+
def test_generate_all_version_list(self):
4545
package = "coherence"
46-
actual_list = self.data_src.generate_all_versions_list(package)
46+
actual_list = self.data_src.generate_all_version_list(package)
4747
expected_list = [
4848
"0.5.2",
4949
"0.5.1",

0 commit comments

Comments
 (0)