2323from vulnerabilities .importer import Reference
2424from vulnerabilities .importer import VulnerabilitySeverity
2525from vulnerabilities .severity_systems import APACHE_HTTPD
26+ from vulnerabilities .utils import get_item
2627
2728logger = logging .getLogger (__name__ )
2829
@@ -40,16 +41,18 @@ def advisory_data(self):
4041 yield self .to_advisory (data )
4142
4243 def to_advisory (self , data ):
43- alias = data ["CVE_data_meta" ]["ID" ]
44- descriptions = data ["description" ]["description_data" ]
44+ alias = get_item (data , "CVE_data_meta" , "ID" )
45+ if not alias :
46+ alias = get_item (data , "cveMetadata" , "cveId" )
47+ descriptions = get_item (data , "description" , "description_data" ) or []
4548 description = None
4649 for desc in descriptions :
47- if desc [ "lang" ] == "eng" :
50+ if desc . get ( "lang" ) == "eng" :
4851 description = desc .get ("value" )
4952 break
5053
5154 severities = []
52- impacts = data .get ("impact" , [])
55+ impacts = data .get ("impact" ) or []
5356 for impact in impacts :
5457 value = impact .get ("other" )
5558 if value :
@@ -68,14 +71,14 @@ def to_advisory(self, data):
6871 )
6972
7073 versions_data = []
71- for vendor in data [ "affects" ][ "vendor" ][ "vendor_data" ]:
72- for products in vendor [ "product" ][ "product_data" ]:
73- for version_data in products [ "version" ][ "version_data" ]:
74+ for vendor in get_item ( data , "affects" , "vendor" , "vendor_data" ) or [ ]:
75+ for products in get_item ( vendor , "product" , "product_data" ) or [ ]:
76+ for version_data in get_item ( products , "version" , "version_data" ) or [ ]:
7477 versions_data .append (version_data )
7578
7679 fixed_versions = []
7780 for timeline_object in data .get ("timeline" ) or []:
78- timeline_value = timeline_object [ "value" ]
81+ timeline_value = timeline_object . get ( "value" )
7982 if "release" in timeline_value :
8083 split_timeline_value = timeline_value .split (" " )
8184 if "never" in timeline_value :
@@ -100,7 +103,7 @@ def to_advisory(self, data):
100103
101104 return AdvisoryData (
102105 aliases = [alias ],
103- summary = description ,
106+ summary = description or "" ,
104107 affected_packages = affected_packages ,
105108 references = [reference ],
106109 )
0 commit comments