Skip to content

Commit 938bf98

Browse files
committed
Fixing two cases in which the GitHub API can return Null values for Author and Uploader. Thanks to @fearcito for reporting the behavior.
1 parent c541d2e commit 938bf98

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/gitxray/xrays/repository_xray.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,13 +240,21 @@ def run(gx_context, gx_output):
240240
asset_uploaders = defaultdict(int)
241241

242242
for release in releases:
243-
release_authors[release.get('author').get('login')] += 1
244-
gx_output.r_log(f"A release was created by {release.get('author').get('login')} at {release.get('created_at')}: {release.get('html_url')}", rtype="releases")
243+
if release.get('author') == None:
244+
author = "NO_USERNAME"
245+
else:
246+
author = release.get('author').get('login')
247+
248+
release_authors[author] += 1
249+
gx_output.r_log(f"A release was created by {author} at {release.get('created_at')}: {release.get('html_url')}", rtype="releases")
245250
if len(release.get('assets')) > 0:
246251
# This release has assets other than frozen code. Let's check if updated_at differs from created_at
247252
# Which may be an indicator of a compromised release by a malicious actor updating binaries.
248253
for asset in release.get('assets'):
249-
uploaded_by = asset.get('uploader').get('login')
254+
if asset.get('uploader') == None:
255+
uploaded_by = "NO_USERNAME"
256+
else:
257+
uploaded_by = asset.get('uploader').get('login')
250258
asset_uploaders[uploaded_by] += 1
251259
created_at = asset.get('created_at')
252260
message = f"An asset was uploaded by {uploaded_by} at {created_at}: {asset.get('url')}"

0 commit comments

Comments
 (0)