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

Function to_advisories

vulnerabilities/importers/postgresql.py:52–135  ·  view source on GitHub ↗
(data)

Source from the content-addressed store, hash-verified

50
51
52def to_advisories(data):
53 advisories = []
54 soup = BeautifulSoup(data, features="lxml")
55 table = soup.select("table")[0]
56 for row in table.select("tbody tr"):
57 ref_col, affected_col, fixed_col, severity_score_col, desc_col = row.select("td")
58 summary = desc_col.text
59 pkg_qualifiers = {}
60 if "windows" in summary.lower():
61 pkg_qualifiers = {"os": "windows"}
62
63 affected_packages = []
64 affected_version_list = affected_col.text.split(",")
65 fixed_version_list = fixed_col.text.split(",")
66
67 if fixed_version_list:
68 for fixed_version in fixed_version_list:
69 affected_packages.append(
70 AffectedPackage(
71 package=PackageURL(
72 name="postgresql",
73 # TODO: See https://github.com/nexB/vulnerablecode/issues/990
74 type="generic",
75 qualifiers=pkg_qualifiers,
76 ),
77 affected_version_range=(
78 GenericVersionRange.from_versions(affected_version_list)
79 if affected_version_list
80 else None
81 ),
82 fixed_version=GenericVersion(fixed_version) if fixed_version else None,
83 )
84 )
85 elif affected_version_list:
86 affected_packages.append(
87 AffectedPackage(
88 package=PackageURL(
89 name="postgresql",
90 # TODO: See https://github.com/nexB/vulnerablecode/issues/990
91 type="generic",
92 qualifiers=pkg_qualifiers,
93 ),
94 affected_version_range=GenericVersionRange.from_versions(affected_version_list),
95 )
96 )
97 cve_id = ""
98 try:
99 cve_id = ref_col.select(".nobr")[0].text
100 # This is for the anomaly in https://www.postgresql.org/support/security/8.1/ 's
101 # last entry
102 except IndexError:
103 pass
104
105 references = []
106 vector_link_tag = severity_score_col.find("a")
107 for a_tag in ref_col.select("a"):
108 link = a_tag.attrs["href"]
109 if link.startswith("/"):

Callers 2

test_to_advisoriesFunction · 0.90
advisory_dataMethod · 0.70

Calls 5

AffectedPackageClass · 0.90
ReferenceClass · 0.90
AdvisoryDataClass · 0.90
GenericVersionClass · 0.85

Tested by 1

test_to_advisoriesFunction · 0.72