Skip to content

Commit c6807c3

Browse files
authored
Omit patched_versions: if the GHSA has no patched version identifiers. (#664)
* Omit `patched_versions:` if the GHSA has no patched version identifiers. * Also add a `notes: Never patched`.
1 parent 35b20e3 commit c6807c3

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

lib/github_advisory_sync.rb

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,9 @@ def first_patched_versions_for(package)
341341
first_patched_versions = []
342342

343343
vulnerabilities.each do |v|
344-
if v['package']['name'] == package.name && v['firstPatchedVersion']
344+
if v['package']['name'] == package.name &&
345+
v['firstPatchedVersion'] &&
346+
v['firstPatchedVersion']['identifier']
345347
first_patched_versions << v['firstPatchedVersion']['identifier']
346348
end
347349
end
@@ -353,11 +355,13 @@ def patched_versions_for(package)
353355
first_patched_versions = first_patched_versions_for(package)
354356
patched_versions = []
355357

356-
first_patched_versions[0..-2].each do |version|
357-
patched_versions << "~> #{version}"
358-
end
358+
if !first_patched_versions.empty?
359+
first_patched_versions[0..-2].each do |version|
360+
patched_versions << "~> #{version}"
361+
end
359362

360-
patched_versions << ">= #{first_patched_versions.last}"
363+
patched_versions << ">= #{first_patched_versions.last}"
364+
end
361365

362366
return patched_versions
363367
end
@@ -371,15 +375,23 @@ def create(package)
371375
"unaffected_versions" => ["<OPTIONAL: FILL IN SEE BELOW>"]
372376
)
373377

378+
patched_versions = patched_versions_for(package)
379+
380+
if !patched_versions.empty?
381+
new_data['patched_versions'] = patched_versions
382+
else
383+
new_data['notes'] = "Never patched"
384+
end
385+
386+
# populate the related information
387+
new_data["related"] = {
388+
"url" => advisory["references"]
389+
}
390+
374391
FileUtils.mkdir_p(File.dirname(filename_to_write))
375392
File.open(filename_to_write, "w") do |file|
376393
# create an automatically generated advisory yaml file
377-
file.write new_data.merge(
378-
"patched_versions" => patched_versions_for(package),
379-
"related" => {
380-
"url" => advisory["references"]
381-
}
382-
).to_yaml
394+
file.write new_data.to_yaml
383395

384396
# The data we just wrote is incomplete,
385397
# and therefore should not be committed as is

0 commit comments

Comments
 (0)