commit: 000e4fad38b17589efa5940a2e5ff46945d00392
parent 61ae154833833e56c9928f33682aa82f85c2d2c1
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Wed, 25 May 2022 18:55:16 +0200
Add support for vendor+product metadata
Diffstat:
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/cve-client b/cve-client
@@ -32,13 +32,14 @@ sub HELP_MESSAGE {
 sub print_cve {
 	my ($object, $cve_id) = @_;
 
-	print "CVE ID: ", $cve_id, "\n\n";
+	print "CVE ID: ", $cve_id, "\n";
 
 	if ($object->{'error'} and $object->{'message'}) {
 		print "Error (", $object->{'error'}, "): ", $object->{'message'}, "\n";
 		exit 1;
 	}
 
+	# https://github.com/CVEProject/cve-schema/blob/master/schema/v4.0/
 	if ($object->{'data_version'} != "4.0") {
 		print "Warning: Got unknown CVE format \"", $object->{'data_version'},
 		  "\"\n";
@@ -49,6 +50,31 @@ sub print_cve {
 		  " instead of ", $cve_id, "\n";
 	}
 
+	print "TITLE: ", $object->{'CVE_data_meta'}->{'TITLE'}, "\n"
+	  if $object->{'CVE_data_meta'}->{'TITLE'};
+
+	print "\n";
+
+	if ($object->{'affects'}->{'vendor'}) {
+		foreach (@{$object->{'affects'}->{'vendor'}->{'vendor_data'}}) {
+			print "Vendor Name: ", $_->{'vendor_name'}, "\n"
+			  if $_->{'vendor_name'};
+
+			foreach (@{$_->{'product'}->{'product_data'}}) {
+				print "Product name: ", $_->{'product_name'}, "\n";
+				print "Product versions: ";
+
+				foreach (@{$_->{'version'}->{'version_data'}}) {
+					print $_->{'version_value'}, "; ";
+				}
+
+				print "\n";
+			}
+		}
+	}
+
+	print "\n";
+
 	if ($object->{'description'}->{'description_data'}) {
 		my $descs = $object->{'description'}->{'description_data'};
 
@@ -129,5 +155,5 @@ if ($#ARGV < 0) {
 }
 
 for (@ARGV) {
-	fetch_cve($_) if $_ =~ /^CVE-\d{4}-\d+$/;
+	fetch_cve($_) if $_ =~ /^CVE-[0-9]{4}-[0-9]{4,19}$/;
 }