diff --git a/rpm_to_cve_parser/rhel_rpm_to_cve.rb b/rpm_to_cve_parser/rhel_rpm_to_cve.rb
index bd29305..b47786a 100755
--- a/rpm_to_cve_parser/rhel_rpm_to_cve.rb
+++ b/rpm_to_cve_parser/rhel_rpm_to_cve.rb
@@ -7,13 +7,11 @@ class RhelRpmToCve
def initialize(filepath)
@filepath = filepath
@file = File.read(filepath)
- @xml = Ox.load(file, mode: :hash)
+ @xml = Ox.parse(file)
end
def list_pkg_names
- xml[:rpms][:rpm].map do |key|
- key.first[:rpm]
- end
+ xml.rpms.locate("?/@rpm")
end
def pkg_exists?(pkg_name)
@@ -22,8 +20,8 @@ class RhelRpmToCve
def cves_per_pkg_name(pkg_name)
if pkg_exists? pkg_name
- results = find_pkg(pkg_name).map do |r|
- r[:cve]
+ results = find_pkg(pkg_name).locate('*/cve').map do |r|
+ r.text
end.compact
{
@@ -36,9 +34,14 @@ class RhelRpmToCve
end
def find_pkg(pkg_name)
- xml[:rpms][:rpm].select do |results|
- results if results.first[:rpm] == pkg_name
- end.first
+ xml.rpms.locate("rpm[@rpm=#{pkg_name}]").first
end
+ def convert_to_json
+ pkgs = list_pkg_names
+ pkgs_and_cves = pkgs.map do |pkg_name|
+ cves_per_pkg_name(pkg_name)
+ end
+ pkgs_and_cves.to_json
+ end
end
diff --git a/rpm_to_cve_parser/rpm-to-cve.xml b/rpm_to_cve_parser/rpm-to-cve.xml
index 072dad7..78f6bdc 100644
--- a/rpm_to_cve_parser/rpm-to-cve.xml
+++ b/rpm_to_cve_parser/rpm-to-cve.xml
@@ -1291032,4 +1291032,301 @@
CVE-2020-15683
CVE-2020-15969
+
+ RHSA-2020:4330
+ i686
+ ppc64
+ s390x
+ x86_64
+ CVE-2020-15683
+ CVE-2020-15969
+
+
+ RHSA-2020:4330
+ ppc64
+ s390x
+ x86_64
+ CVE-2020-15683
+ CVE-2020-15969
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4331
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
+
+ RHSA-2020:4332
+ ppc64le
+ x86_64
+ CVE-2020-14385
+ CVE-2020-14386
+
diff --git a/rpm_to_cve_parser/rpm_pkg_audit.rb b/rpm_to_cve_parser/rpm_pkg_audit.rb
index b82820a..cca565c 100755
--- a/rpm_to_cve_parser/rpm_pkg_audit.rb
+++ b/rpm_to_cve_parser/rpm_pkg_audit.rb
@@ -2,8 +2,7 @@
# frozen_string_literal: true
require 'optparse'
-require 'pry'
-require 'pp'
+require 'json'
require './rhel_rpm_to_cve'
data_file = './rpm-to-cve.xml'
@@ -26,7 +25,8 @@ pkg_name = options[:pkg]
rpm_auditer = RhelRpmToCve.new(data_file)
if pkg_name
- pp rpm_auditer.cves_per_pkg_name(pkg_name)
+ json = rpm_auditer.cves_per_pkg_name(pkg_name).to_json
+ puts JSON.pretty_generate(JSON.parse(json))
else options.key?(:list)
puts rpm_auditer.list_pkg_names.sort
end