mirror of
https://git.yoctoproject.org/poky
synced 2026-10-16 05:17:02 +00:00
improve_kernel_cve_report: fix backported-patch check
The guard added in 80ff4903ea tests "detail" in cve_data, but cve_data is
keyed by CVE id, so it asks whether a CVE literally named "detail" was
scanned. That is never true, the condition short-circuits, and the guard
never runs: a CVE_STATUS[CVE-...] = "backported-patch" set for a vendor
cherry-picked patch is silently overwritten to Unpatched by the CNA.
Use .get() on the entry instead. Guard the fallthrough warning the same
way, it makes the same assumption.
Tested against a qemuarm64 linux-yocto report (6.6.142+git, 16221 entries,
4313 of them with no detail). Current master and this version produce
identical output, 18773 entries with no difference. Adding
CVE_STATUS[CVE-2024-42067] = "backported-patch" to that report then makes
the only difference between them: master overwrites it to Unpatched, this
version keeps it Patched. The pre-80ff4903ea code aborts on the same
report with "KeyError: 'detail'".
AI-Generated: Uses Claude (claude-opus-5)
Fixes: 80ff4903ea1b ("improve_kernel_cve_report: validate that cve details field exists")
(From OE-Core rev: ff8709c6ea17ef64e660c12f225c839865b3facb)
Signed-off-by: Hiago De Franco <hfranco@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit f5da16b0d3c8f889dab061ba1d8808aba95d4c67)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
This commit is contained in:
1 parent
6a0c63f249
commit
7f9740716b
1 file changed
+2
-2
@@ -362,7 +362,7 @@ def cve_update(cve_data, cve, entry):
|
||||
if entry['status'] == "Unpatched" and cve_data[cve]['status'] == "Patched":
|
||||
# Backported-patch (e.g. vendor kernel repo with cherry-picked CVE patch)
|
||||
# has priority over unpatch from CNA
|
||||
if "detail" in cve_data and cve_data[cve]['detail'] == "backported-patch":
|
||||
if cve_data[cve].get('detail') == "backported-patch":
|
||||
return
|
||||
logging.warning("CVE entry %s update from Patched to Unpatched from the scan result", cve)
|
||||
cve_data[cve] = copy_data(cve_data[cve], entry)
|
||||
@@ -381,7 +381,7 @@ def cve_update(cve_data, cve, entry):
|
||||
logging.debug("CVE entry %s updated from Unpatched to Ignored", cve)
|
||||
return
|
||||
logging.warning("Unhandled CVE entry update for %s %s from %s %s to %s",
|
||||
cve, cve_data[cve]['status'], cve_data[cve]['detail'], entry['status'], entry['detail'])
|
||||
cve, cve_data[cve]['status'], cve_data[cve].get('detail'), entry['status'], entry['detail'])
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
|
||||
Reference in new issue
Block a user