sbom-cve-check-update-nvd-native:do_patch \
"
+SBOM_CVE_CHECK_SHOW_WARNINGS ?= "1"
+SBOM_CVE_CHECK_SHOW_WARNINGS[doc] = "Show warning messages when unpatched CVEs are found. \
+Requires the SBOM_CVE_CHECK_EXPORT_CVECHECK report type to be enabled"
+
+def show_warnings_from_file(cvecheck_export_file):
+ import json
+
+ try:
+ with open(cvecheck_export_file, "r") as f:
+ report = json.load(f)
+ except (json.JSONDecodeError, UnicodeDecodeError) as e:
+ bb.error(f"Failed to open JSON report file {f}: {e}")
+ return
+
+ packages = report.get("package", [])
+ for package in packages:
+ unpatched = []
+ cves = package.get("issue", [])
+ for cve in cves:
+ if cve["status"] == "Unpatched":
+ unpatched.append(cve["id"])
+ if unpatched:
+ pname = package["name"]
+ version = package["version"]
+ bb.warn(f"{pname}-{version}: Found unpatched CVEs: {', '.join(unpatched)}")
+
def run_sbom_cve_check(d, sbom_path, export_base_name, export_link_name=None):
import os
import bb
bb.error(f"sbom-cve-check failed: {e}")
return
+ show_warnings = bb.utils.to_boolean(d.getVar("SBOM_CVE_CHECK_SHOW_WARNINGS"))
+
for export_type, export_file, export_link in export_files:
bb.note(f"sbom-cve-check exported: {export_file}")
if export_link:
update_symlinks(export_file, export_link)
+ if show_warnings and export_type == d.getVarFlag("SBOM_CVE_CHECK_EXPORT_CVECHECK", "type"):
+ show_warnings_from_file(export_file)