Skip to content

Commit f3415e7

Browse files
committed
add missing cvss_v3 scores during github sync
1 parent 1eb6530 commit f3415e7

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

lib/github_advisory_sync.rb

+25-4
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ def withdrawn?
226226
end
227227

228228
def cvss
229-
return "<FILL IN IF AVAILABLE>" if advisory["cvss"]["vectorString"].nil?
229+
return if advisory["cvss"]["vectorString"].nil?
230230

231231
advisory["cvss"]["score"].to_f
232232
end
@@ -245,12 +245,32 @@ def rubysec_filename
245245
File.join("gems", package_name, "#{primary_id}.yml")
246246
end
247247

248-
def rubysec_file_does_not_exist?
249-
!File.exist?(rubysec_filename)
248+
def update_file
249+
saved_data = YAML.load_file(rubysec_filename)
250+
251+
return if saved_data.key?("cvss_v3") || cvss.nil?
252+
253+
cvss_added = false
254+
File.open("#{rubysec_filename}.tmp", "w") do |f|
255+
IO.foreach(rubysec_filename) do |line|
256+
if (line.include?('unaffected_versions:') || line.include?('patched_versions:')) && !cvss_added
257+
f.write("cvss_v3: #{cvss}\n\n")
258+
cvss_added = true
259+
end
260+
f.write(line)
261+
end
262+
end
263+
264+
File.delete(rubysec_filename)
265+
File.rename("#{rubysec_filename}.tmp", rubysec_filename)
266+
267+
puts "Updated: #{rubysec_filename}"
268+
269+
rubysec_filename
250270
end
251271

252272
def write_file
253-
return unless rubysec_file_does_not_exist?
273+
return update_file if File.exist?(rubysec_filename)
254274

255275
data = {
256276
"gem" => package_name,
@@ -264,6 +284,7 @@ def write_file
264284
"unaffected_versions" => ["<OPTIONAL: FILL IN SEE BELOW>"]
265285
}
266286
data["cve"] = cve_id[4..20] if cve_id
287+
data["cvss_v3"] = "<FILL IN IF AVAILABLE>" if cvss.nil?
267288

268289
dir_to_write = File.dirname(rubysec_filename)
269290
Dir.mkdir dir_to_write unless Dir.exist?(dir_to_write)

0 commit comments

Comments
 (0)