Skip to content

Commit 381ad88

Browse files
committed
Do the style changes to follow coding standards
Signed-off-by: Shivam Sandbhor <shivam.sandbhor@gmail.com>
1 parent 3278a50 commit 381ad88

17 files changed

Lines changed: 652 additions & 513 deletions

vulnerabilities/data_source.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,14 @@
4646
@dataclasses.dataclass
4747
class VulnerabilityReferenceUnit:
4848

49-
url : str = ''
50-
reference_id : str = ''
49+
url: str = ''
50+
reference_id: str = ''
5151

52-
def __post_init__(self) :
52+
def __post_init__(self):
5353
if not any([self.url, self.reference_id]):
5454
raise TypeError
5555

56+
5657
@dataclasses.dataclass
5758
class Advisory:
5859
"""
@@ -67,7 +68,7 @@ class Advisory:
6768
summary: str
6869
impacted_package_urls: Iterable[PackageURL]
6970
resolved_package_urls: Iterable[PackageURL] = dataclasses.field(default_factory=list)
70-
vuln_references : List[VulnerabilityReferenceUnit] = dataclasses.field(default_factory=list)
71+
vuln_references: List[VulnerabilityReferenceUnit] = dataclasses.field(default_factory=list)
7172
cve_id: Optional[str] = None
7273

7374
def __hash__(self):
@@ -480,8 +481,9 @@ def get_data_from_xml_doc(self, xml_doc: ET.ElementTree, pkg_metadata={}) -> Lis
480481
description = definition_data['description']
481482
affected_purls = set()
482483
safe_purls = set()
483-
references = [VulnerabilityReferenceUnit(url=url) for url in definition_data['reference_urls']]
484-
484+
references = [VulnerabilityReferenceUnit(url=url)
485+
for url in definition_data['reference_urls']]
486+
485487
for test_data in definition_data['test_data']:
486488
for package in test_data['package_list']:
487489
pkg_name = package

vulnerabilities/import_runner.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
class VulnerabilityReferenceInserter:
5252
vulnerability: models.Vulnerability
5353
reference_id: Optional[str] = ''
54-
url: Optional[str] = ''
54+
url: Optional[str] = ''
5555

5656
def __post_init__(self):
5757
if not any([self.reference_id, self.url]):
@@ -171,14 +171,18 @@ def _create_vulnerability_and_references(advisory: Advisory):
171171
# This means vulnerability didn't previously exist in the DB, so add
172172
# the references to bulk create queue without any hesitation
173173
for ref in advisory.vuln_references:
174-
new_vuln_references.add(VulnerabilityReferenceInserter(vulnerability=vuln, **dataclasses.asdict(ref)))
174+
new_vuln_references.add(
175+
VulnerabilityReferenceInserter(
176+
vulnerability=vuln,
177+
**dataclasses.asdict(ref)))
175178

176179
else:
177180
# build indexes of existing references to either update or create new ones
178181
# and avoid creating duplicates
179182

180183
existing_vuln_references = models.VulnerabilityReference.objects.filter(vulnerability=vuln)
181-
refs_by_id_url = {(ref.id, ref.url): ref for ref in existing_vuln_references if ref.id and ref.url}
184+
refs_by_id_url = {
185+
(ref.id, ref.url): ref for ref in existing_vuln_references if ref.id and ref.url}
182186
refs_by_id = {ref.id: ref for ref in existing_vuln_references if ref.id}
183187
refs_by_url = {ref.url: ref for ref in existing_vuln_references if ref.url}
184188

@@ -191,7 +195,7 @@ def _create_vulnerability_and_references(advisory: Advisory):
191195

192196
elif adv_ref.url:
193197
existing_ref = refs_by_url.get(adv_ref.url)
194-
198+
195199
if existing_ref:
196200
# update ref as needed
197201
if not adv_ref.reference_id or not adv_ref.url:
@@ -208,8 +212,8 @@ def _create_vulnerability_and_references(advisory: Advisory):
208212
else:
209213
new_vuln_references.add(
210214
VulnerabilityReferenceInserter(
211-
vulnerability=vuln,
212-
reference_id=adv_ref.reference_id,
215+
vulnerability=vuln,
216+
reference_id=adv_ref.reference_id,
213217
url=adv_ref.url,
214218
)
215219
)
@@ -222,7 +226,7 @@ def _create_pkg_vuln_refs(vuln: models.Vulnerability, vuln_created: bool, purls:
222226
for purl in purls:
223227
pkg, pkg_created = _get_or_create_package(purl)
224228
vuln_pkg_ref = PackageRelatedVulnerabilityInserter(
225-
package=pkg, vulnerability=vuln, is_vulnerable=is_vulnerable)
229+
package=pkg, vulnerability=vuln, is_vulnerable=is_vulnerable)
226230

227231
if pkg_created or vuln_created:
228232
new_refs.add(vuln_pkg_ref)
@@ -390,9 +394,9 @@ def _insert_vulnerabilities_and_references(batch: Set[Advisory]) -> Set[models.V
390394

391395
vulnerabilities.add(vuln)
392396

393-
# TODO: Refactor this method to be atleast as efficient as
397+
# TODO: Refactor this method to be atleast as efficient as
394398
# one used by _process_updated_advisories
395-
399+
396400
for ref in advisory.vuln_references:
397401
models.VulnerabilityReference.objects.get_or_create(
398402
vulnerability=vuln, reference_id=ref.reference_id, url=ref.url)

vulnerabilities/importers/alpine_linux.py

Lines changed: 53 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
from vulnerabilities.data_source import Advisory
3636
from vulnerabilities.data_source import GitDataSource
37-
from vulnerabilities.data_source import VulnerabilityReferenceUnit
37+
from vulnerabilities.data_source import VulnerabilityReferenceUnit
3838

3939

4040
def validate_schema(advisory_dict):
@@ -54,14 +54,12 @@ def validate_schema(advisory_dict):
5454
Regex(r"XSA-\d{3}"),
5555
Regex(r"ZBX-\d{4}"),
5656
Regex(r"wnpa-sec-\d{4}-\d{2}"),
57-
58-
5957
)
6058
],
6159
"",
6260
# FIXME: Remove the None when below issue gets fixed
6361
# https://gitlab.alpinelinux.org/alpine/infra/alpine-secdb/-/issues/1
64-
None
62+
None,
6563
),
6664
},
6765
}
@@ -73,13 +71,13 @@ def validate_schema(advisory_dict):
7371

7472

7573
class AlpineDataSource(GitDataSource):
76-
7774
def __enter__(self):
7875
super(AlpineDataSource, self).__enter__()
7976

80-
if not getattr(self, '_added_files', None):
77+
if not getattr(self, "_added_files", None):
8178
self._added_files, self._updated_files = self.file_changes(
82-
recursive=True, file_ext='yaml')
79+
recursive=True, file_ext="yaml"
80+
)
8381

8482
def updated_advisories(self) -> Set[Advisory]:
8583
files = self._updated_files.union(self._added_files)
@@ -95,42 +93,36 @@ def _process_file(self, path) -> List[Advisory]:
9593
with open(path) as f:
9694
record = yaml.safe_load(f)
9795

98-
if record['packages'] is None:
96+
if record["packages"] is None:
9997
return advisories
10098
validate_schema(record)
10199

102-
for p in record['packages']:
103-
advisories.extend(self._load_advisories(
104-
p['pkg'],
105-
record['distroversion'],
106-
record['reponame'],
107-
record['archs'],
108-
))
100+
for p in record["packages"]:
101+
advisories.extend(
102+
self._load_advisories(
103+
p["pkg"], record["distroversion"], record["reponame"], record["archs"],
104+
)
105+
)
109106

110107
return advisories
111108

112109
def _load_advisories(
113-
self,
114-
pkg_infos: Mapping[str, Any],
115-
distroversion: str,
116-
reponame: str,
117-
archs: Iterable[str],
110+
self, pkg_infos: Mapping[str, Any], distroversion: str, reponame: str, archs: Iterable[str],
118111
) -> List[Advisory]:
119112

120113
advisories = []
121114

122-
for version, fixed_vulns in pkg_infos['secfixes'].items():
115+
for version, fixed_vulns in pkg_infos["secfixes"].items():
123116

124117
if fixed_vulns is None:
125118
continue
126119

127120
resolved_purls = {
128121
PackageURL(
129-
name=pkg_infos['name'],
130-
type='alpine',
122+
name=pkg_infos["name"],
123+
type="alpine",
131124
version=version,
132-
qualifiers={
133-
'arch': arch, 'distroversion': distroversion, 'reponame': reponame},
125+
qualifiers={"arch": arch, "distroversion": distroversion, "reponame": reponame},
134126
)
135127
for arch in archs
136128
}
@@ -140,32 +132,41 @@ def _load_advisories(
140132
references = []
141133
for reference_id in vuln_ids[1:]:
142134

143-
if reference_id.startswith('XSA'):
144-
xsa_id = reference_id.split('-')[-1]
145-
references.append(VulnerabilityReferenceUnit(
146-
reference_id=reference_id,
147-
url='https://xenbits.xen.org/xsa/advisory-{}.html'.format(xsa_id)
148-
))
149-
150-
elif reference_id.startswith('ZBX'):
151-
references.append(VulnerabilityReferenceUnit(
152-
reference_id=reference_id,
153-
url='https://support.zabbix.com/browse/{}'.format(reference_id)
154-
))
155-
156-
elif reference_id.startswith('wnpa-sec'):
157-
references.append(VulnerabilityReferenceUnit(
158-
reference_id=reference_id,
159-
url='https://www.wireshark.org/security/{}.html'.format(reference_id)
160-
))
161-
162-
163-
advisories.append(Advisory(
164-
summary='',
165-
impacted_package_urls=[],
166-
resolved_package_urls=resolved_purls,
167-
vuln_references=references,
168-
cve_id=vuln_ids[0] if vuln_ids[0] != 'CVE-????-?????' else None,
169-
))
135+
if reference_id.startswith("XSA"):
136+
xsa_id = reference_id.split("-")[-1]
137+
references.append(
138+
VulnerabilityReferenceUnit(
139+
reference_id=reference_id,
140+
url="https://xenbits.xen.org/xsa/advisory-{}.html".format(xsa_id),
141+
)
142+
)
143+
144+
elif reference_id.startswith("ZBX"):
145+
references.append(
146+
VulnerabilityReferenceUnit(
147+
reference_id=reference_id,
148+
url="https://support.zabbix.com/browse/{}".format(reference_id),
149+
)
150+
)
151+
152+
elif reference_id.startswith("wnpa-sec"):
153+
references.append(
154+
VulnerabilityReferenceUnit(
155+
reference_id=reference_id,
156+
url="https://www.wireshark.org/security/{}.html".format(
157+
reference_id
158+
),
159+
)
160+
)
161+
162+
advisories.append(
163+
Advisory(
164+
summary="",
165+
impacted_package_urls=[],
166+
resolved_package_urls=resolved_purls,
167+
vuln_references=references,
168+
cve_id=vuln_ids[0] if vuln_ids[0] != "CVE-????-?????" else None,
169+
)
170+
)
170171

171172
return advisories

vulnerabilities/importers/archlinux.py

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,26 @@
3131
from packageurl import PackageURL
3232
from schema import Regex, Schema, Or
3333

34-
from vulnerabilities.data_source import DataSource, DataSourceConfiguration, Advisory,VulnerabilityReferenceUnit
34+
from vulnerabilities.data_source import (
35+
DataSource,
36+
DataSourceConfiguration,
37+
Advisory,
38+
VulnerabilityReferenceUnit,
39+
)
3540

3641

3742
def validate_schema(advisory_dict):
3843
scheme = {
39-
40-
'advisories': list,
41-
'affected': str,
42-
'fixed': Or(None, str),
43-
'issues': [Regex(r'CVE-\d+-\d+')],
44-
'name': str,
45-
'packages': [str],
46-
'status': str,
47-
'ticket': object,
48-
'type': str,
49-
'severity': str,
50-
44+
"advisories": list,
45+
"affected": str,
46+
"fixed": Or(None, str),
47+
"issues": [Regex(r"CVE-\d+-\d+")],
48+
"name": str,
49+
"packages": [str],
50+
"status": str,
51+
"ticket": object,
52+
"type": str,
53+
"severity": str,
5154
}
5255

5356
Schema(scheme).validate(advisory_dict)
@@ -83,43 +86,50 @@ def _fetch(self) -> Iterable[Mapping]:
8386
def _parse(self, record) -> List[Advisory]:
8487
advisories = []
8588

86-
for cve_id in record['issues']:
89+
for cve_id in record["issues"]:
8790
impacted_purls, resolved_purls = set(), set()
88-
for name in record['packages']:
89-
impacted_purls.add(PackageURL(
90-
name=name,
91-
type='pacman',
92-
namespace='archlinux',
93-
version=record['affected'],
94-
))
95-
96-
if record['fixed']:
97-
resolved_purls.add(PackageURL(
98-
name=name,
99-
type='pacman',
100-
namespace='archlinux',
101-
version=record['fixed'],
102-
))
91+
for name in record["packages"]:
92+
impacted_purls.add(
93+
PackageURL(
94+
name=name, type="pacman", namespace="archlinux", version=record["affected"],
95+
)
96+
)
97+
98+
if record["fixed"]:
99+
resolved_purls.add(
100+
PackageURL(
101+
name=name,
102+
type="pacman",
103+
namespace="archlinux",
104+
version=record["fixed"],
105+
)
106+
)
103107

104108
vuln_references = []
105-
vuln_references.append(VulnerabilityReferenceUnit(
106-
reference_id=record['name'],
107-
url='https://security.archlinux.org/{}'.format(record['name']))
109+
vuln_references.append(
110+
VulnerabilityReferenceUnit(
111+
reference_id=record["name"],
112+
url="https://security.archlinux.org/{}".format(record["name"]),
113+
)
114+
)
115+
116+
for ref in record["advisories"]:
117+
vuln_references.append(
118+
VulnerabilityReferenceUnit(
119+
reference_id=ref,
120+
url="https://security.archlinux.org/{}".format(record["name"]),
121+
)
108122
)
109-
110-
for ref in record['advisories']:
111-
vuln_references.append(VulnerabilityReferenceUnit(
112-
reference_id=ref,
113-
url='https://security.archlinux.org/{}'.format(record['name'])))
114123
print(vuln_references)
115-
116-
117-
advisories.append(Advisory(
118-
cve_id=cve_id,
119-
summary='',
120-
impacted_package_urls=impacted_purls,
121-
resolved_package_urls=resolved_purls,
122-
vuln_references=vuln_references
123-
))
124+
125+
advisories.append(
126+
Advisory(
127+
cve_id=cve_id,
128+
summary="",
129+
impacted_package_urls=impacted_purls,
130+
resolved_package_urls=resolved_purls,
131+
vuln_references=vuln_references,
132+
)
133+
)
124134

125135
return advisories

0 commit comments

Comments
 (0)