MCPcopy Create free account
hub / github.com/aboutcode-org/vulnerablecode / parse_advisory_data

Function parse_advisory_data

vulnerabilities/importers/gsd.py:51–93  ·  view source on GitHub ↗

Parse a GSD advisory file and return an AdvisoryData. Each advisory file contains the advisory information in JSON format.

(raw_data, file_name)

Source from the content-addressed store, hash-verified

49
50
51def parse_advisory_data(raw_data, file_name):
52 """
53 Parse a GSD advisory file and return an AdvisoryData.
54 Each advisory file contains the advisory information in JSON format.
55 """
56
57 namespaces = raw_data.get("namespaces") or {}
58 cve_org = namespaces.get("cve.org") or {}
59 nvd_nist_gov = namespaces.get("nvd.nist.gov") or {}
60
61 gsd = raw_data.get("GSD") or {}
62 gsd_id = gsd.get("id") or file_name
63 gsd_alias = gsd.get("alias") or []
64 gsd_description = gsd.get("description") or ""
65
66 gsd_reference_data = gsd.get("") or []
67 gsd_references = [Reference(url=ref) for ref in gsd_reference_data]
68
69 details = gsd_description or "".join(get_description(cve_org))
70
71 aliases_cve_org = get_aliases(cve_org)
72 aliases_nvd_nist_gov = get_aliases(nvd_nist_gov)
73
74 aliases = [gsd_alias, gsd_id] + aliases_cve_org + aliases_nvd_nist_gov
75 aliases = [alias for alias in aliases if alias is not None]
76
77 summary = build_description(summary=get_summary(cve_org), description=details)
78
79 severities = get_severities(cve_org)
80 configurations = nvd_nist_gov.get("configurations") or {}
81 nodes = configurations.get("nodes") or []
82 cpes = get_cpe(nodes)
83
84 references = get_references(cve_org) + gsd_references
85
86 date_published = get_published_date_nvd_nist_gov(nvd_nist_gov)
87
88 return AdvisoryData(
89 aliases=dedupe(aliases),
90 summary=summary,
91 references=references,
92 date_published=date_published,
93 )
94
95
96def get_summary(cve) -> str:

Callers 5

test_to_advisories1Method · 0.90
test_to_advisories2Method · 0.90
test_to_advisories3Method · 0.90
test_to_advisories4Method · 0.90
advisory_dataMethod · 0.70

Calls 12

ReferenceClass · 0.90
build_descriptionFunction · 0.90
AdvisoryDataClass · 0.90
dedupeFunction · 0.90
get_descriptionFunction · 0.85
get_cpeFunction · 0.85
get_aliasesFunction · 0.70
get_summaryFunction · 0.70
get_severitiesFunction · 0.70
get_referencesFunction · 0.70
getMethod · 0.45

Tested by 4

test_to_advisories1Method · 0.72
test_to_advisories2Method · 0.72
test_to_advisories3Method · 0.72
test_to_advisories4Method · 0.72