Skip to content

Commit 4980f92

Browse files
committed
Streamline code
Use variables when relevant Signed-off-by: Philippe Ombredanne <[email protected]>
1 parent 07553e4 commit 4980f92

File tree

5 files changed

+58
-48
lines changed

5 files changed

+58
-48
lines changed

vulntotal/datasources/deps.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,22 @@ def supported_ecosystem(cls):
5757

5858

5959
def parse_advisory(advisory) -> Iterable[VendorData]:
60-
affected_versions = [event["version"] for event in advisory["packages"][0]["versionsAffected"]]
61-
fixed_versions = [event["version"] for event in advisory["packages"][0]["versionsUnaffected"]]
60+
package = advisory["packages"][0]
61+
affected_versions = [event["version"] for event in package["versionsAffected"]]
62+
fixed_versions = [event["version"] for event in package["versionsUnaffected"]]
6263
yield VendorData(
63-
aliases=sorted(list(set(advisory["aliases"]))),
64-
affected_versions=sorted(list(set(affected_versions))),
65-
fixed_versions=sorted(list(set(fixed_versions))),
64+
aliases=sorted(set(advisory["aliases"])),
65+
affected_versions=sorted(set(affected_versions)),
66+
fixed_versions=sorted(set(fixed_versions)),
6667
)
6768

6869

6970
def parse_advisories_from_meta(advisories_metadata):
7071
advisories = []
71-
if "dependencies" in advisories_metadata and advisories_metadata["dependencies"]:
72-
for dependency in advisories_metadata["dependencies"]:
73-
if dependency["advisories"]:
74-
advisories.extend(dependency["advisories"])
72+
dependencies = advisories_metadata.get("dependencies") or []
73+
for dependency in dependencies:
74+
advs = dependency.get("advisories") or []
75+
advisories.extend(advs)
7576
return advisories
7677

7778

vulntotal/datasources/github.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,12 @@ def supported_ecosystem(cls):
5656

5757
def parse_advisory(interesting_edges) -> Iterable[VendorData]:
5858
for edge in interesting_edges:
59-
aliases = [aliase["value"] for aliase in edge["node"]["advisory"]["identifiers"]]
59+
node = edge["node"]
60+
aliases = [aliase["value"] for aliase in node["advisory"]["identifiers"]]
6061
affected_versions = (
61-
edge["node"]["vulnerableVersionRange"].strip().replace(" ", "").split(",")
62+
node["vulnerableVersionRange"].strip().replace(" ", "").split(",")
6263
)
63-
fixed_versions = [edge["node"]["firstPatchedVersion"]["identifier"]]
64+
fixed_versions = [node["firstPatchedVersion"]["identifier"]]
6465
yield VendorData(
6566
aliases=sorted(list(set(aliases))),
6667
affected_versions=sorted(list(set(affected_versions))),

vulntotal/datasources/gitlab.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,13 @@ def get_casesensitive_slug(path, package_slug):
139139
paginated_tree = response[0]["data"]["project"]["repository"]["paginatedTree"]
140140

141141
for slug in paginated_tree["nodes"][0]["trees"]["nodes"]:
142-
if slug["flatPath"].lower() == package_slug.lower():
143-
return slug["flatPath"]
142+
slug_flatpath = slug["flatPath"]
143+
if slug_flatpath.lower() == package_slug.lower():
144+
return slug_flatpath
144145

145146
# If the namespace/subfolder contains multiple packages, then progressive transverse through folders tree
146-
if package_slug.lower().startswith(slug["flatPath"].lower()):
147-
return get_gitlab_style_slug(slug["flatPath"], package_slug)
147+
if package_slug.lower().startswith(slug_flatpath.lower()):
148+
return get_gitlab_style_slug(slug_flatpath, package_slug)
148149

149150
payload[0]["variables"]["nextPageCursor"] = paginated_tree["pageInfo"]["endCursor"]
150151
hasnext = paginated_tree["pageInfo"]["hasNextPage"]
@@ -157,10 +158,11 @@ def parse_interesting_advisories(location, version, delete_download=False) -> It
157158
for file in sorted(files):
158159
with open(file) as f:
159160
gitlab_advisory = saneyaml.load(f)
160-
if gitlab_constraints_satisfied(gitlab_advisory["affected_range"], version):
161+
affected_range = gitlab_advisory["affected_range"]
162+
if gitlab_constraints_satisfied(affected_range, version):
161163
yield VendorData(
162164
aliases=gitlab_advisory["identifiers"],
163-
affected_versions=[gitlab_advisory["affected_range"]],
165+
affected_versions=[affected_range],
164166
fixed_versions=gitlab_advisory["fixed_versions"],
165167
)
166168
if delete_download:

vulntotal/datasources/oss_index.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,15 @@ def supported_ecosystem(cls):
8181

8282
def parse_advisory(component) -> Iterable[VendorData]:
8383
response = component[0]
84-
if response["vulnerabilities"]:
85-
for vuln in response["vulnerabilities"]:
86-
aliases = [vuln["id"]]
87-
affected_versions = []
88-
fixed_versions = []
89-
if "versionRanges" in vuln:
90-
affected_versions.extend(vuln["versionRanges"])
91-
yield VendorData(
92-
aliases=aliases,
93-
affected_versions=affected_versions,
94-
fixed_versions=fixed_versions,
95-
)
84+
vulnerabilities = response.get("vulnerabilities") or []
85+
for vuln in vulnerabilities:
86+
aliases = [vuln["id"]]
87+
affected_versions = []
88+
fixed_versions = []
89+
version_ranges = vuln.get("versionRanges") or []
90+
affected_versions.extend(version_ranges)
91+
yield VendorData(
92+
aliases=aliases,
93+
affected_versions=affected_versions,
94+
fixed_versions=fixed_versions,
95+
)

vulntotal/datasources/osv.py

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,18 @@ def supported_ecosystem(cls):
6363

6464

6565
def parse_advisory(response) -> Iterable[VendorData]:
66-
"""Parse response from OSV API and yield VendorData"""
66+
"""
67+
Parse response from OSV API and yield VendorData
68+
"""
6769

6870
for vuln in response.get("vulns") or []:
6971
aliases = []
7072
affected_versions = []
7173
fixed = []
7274

7375
aliases.extend(vuln.get("aliases") or [])
74-
aliases.append(vuln.get("id")) if vuln.get("id") else None
76+
vuln_id = vuln.get("id")
77+
aliases.append(vuln_id) if vuln_id else None
7578

7679
try:
7780
affected_versions.extend(get_item(vuln, "affected", 0, "versions") or [])
@@ -100,40 +103,43 @@ def generate_payload(purl):
100103
supported_ecosystem = OSVDataSource.supported_ecosystem()
101104
payload = {}
102105
payload["version"] = purl.version
103-
payload["package"] = {}
106+
package = payload["package"] = {}
104107

105-
if purl.type in supported_ecosystem:
106-
payload["package"]["ecosystem"] = supported_ecosystem[purl.type]
108+
purl_type = purl.type
109+
purl_namespace = purl.namespace
107110

108-
if purl.type == "maven":
109-
if not purl.namespace:
111+
if purl_type in supported_ecosystem:
112+
package["ecosystem"] = supported_ecosystem[purl_type]
113+
114+
if purl_type == "maven":
115+
if not purl_namespace:
110116
logger.error(f"Invalid Maven PURL {str(purl)}")
111117
return
112-
payload["package"]["name"] = f"{purl.namespace}:{purl.name}"
118+
package["name"] = f"{purl.namespace}:{purl.name}"
113119

114-
elif purl.type == "packagist":
115-
if not purl.namespace:
120+
elif purl_type == "packagist":
121+
if not purl_namespace:
116122
logger.error(f"Invalid Packagist PURL {str(purl)}")
117123
return
118-
payload["package"]["name"] = f"{purl.namespace}/{purl.name}"
124+
package["name"] = f"{purl.namespace}/{purl.name}"
119125

120-
elif purl.type == "linux":
126+
elif purl_type == "linux":
121127
if purl.name not in ("kernel", "Kernel"):
122128
logger.error(f"Invalid Linux PURL {str(purl)}")
123129
return
124-
payload["package"]["name"] = "Kernel"
130+
package["name"] = "Kernel"
125131

126-
elif purl.type == "nuget":
132+
elif purl_type == "nuget":
127133
nuget_package = get_closest_nuget_package_name(purl.name)
128134
if not nuget_package:
129135
logger.error(f"Invalid NuGet PURL {str(purl)}")
130136
return
131-
payload["package"]["name"] = nuget_package
137+
package["name"] = nuget_package
132138

133-
elif purl.type == "golang" and purl.namespace:
134-
payload["package"]["name"] = f"{purl.namespace}/{purl.name}"
139+
elif purl_type == "golang" and purl_namespace:
140+
package["name"] = f"{purl.namespace}/{purl.name}"
135141

136142
else:
137-
payload["package"]["name"] = purl.name
143+
package["name"] = purl.name
138144

139145
return payload

0 commit comments

Comments
 (0)