summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorLee Chee Yang <chee.yang.lee@intel.com>2021-01-29 11:51:15 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-01-30 10:41:04 +0000
commit86b42289bda5bc2a4eff221ab476f170dd3d3794 (patch)
treee936bb438cb97ea1a07db5517bc29524e2af501f /meta/classes
parentef208aaf0f05c478a3dbade3d2bfd3744f91d87e (diff)
downloadpoky-86b42289bda5bc2a4eff221ab476f170dd3d3794.tar.gz
cve_check: add CVE_VERSION_SUFFIX to indicate suffix in versioning
add CVE_VERSION_SUFFIX to indicate the version suffix type, currently works in two value, "alphabetical" if the version string uses single alphabetical character suffix as incremental release, blank to not consider the unidentified suffixes. This can be expand when more suffix pattern identified. refactor cve_check.Version class to use functools and add parameter to handle suffix condition. Also update testcases to cover new changes. (From OE-Core rev: 5dfd5ad5144708b474ef31eaa89a846c57be8ac0) Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/cve-check.bbclass12
1 files changed, 8 insertions, 4 deletions
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass
index 646cc879dd..ed86403b6b 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -53,6 +53,9 @@ CVE_CHECK_PN_WHITELIST ?= ""
53# 53#
54CVE_CHECK_WHITELIST ?= "" 54CVE_CHECK_WHITELIST ?= ""
55 55
56# set to "alphabetical" for version using single alphabetical character as increament release
57CVE_VERSION_SUFFIX ??= ""
58
56python cve_save_summary_handler () { 59python cve_save_summary_handler () {
57 import shutil 60 import shutil
58 import datetime 61 import datetime
@@ -210,6 +213,7 @@ def check_cves(d, patched_cves):
210 213
211 pn = d.getVar("PN") 214 pn = d.getVar("PN")
212 real_pv = d.getVar("PV") 215 real_pv = d.getVar("PV")
216 suffix = d.getVar("CVE_VERSION_SUFFIX")
213 217
214 cves_unpatched = [] 218 cves_unpatched = []
215 # CVE_PRODUCT can contain more than one product (eg. curl/libcurl) 219 # CVE_PRODUCT can contain more than one product (eg. curl/libcurl)
@@ -263,8 +267,8 @@ def check_cves(d, patched_cves):
263 else: 267 else:
264 if operator_start: 268 if operator_start:
265 try: 269 try:
266 vulnerable_start = (operator_start == '>=' and Version(pv) >= Version(version_start)) 270 vulnerable_start = (operator_start == '>=' and Version(pv,suffix) >= Version(version_start,suffix))
267 vulnerable_start |= (operator_start == '>' and Version(pv) > Version(version_start)) 271 vulnerable_start |= (operator_start == '>' and Version(pv,suffix) > Version(version_start,suffix))
268 except: 272 except:
269 bb.warn("%s: Failed to compare %s %s %s for %s" % 273 bb.warn("%s: Failed to compare %s %s %s for %s" %
270 (product, pv, operator_start, version_start, cve)) 274 (product, pv, operator_start, version_start, cve))
@@ -274,8 +278,8 @@ def check_cves(d, patched_cves):
274 278
275 if operator_end: 279 if operator_end:
276 try: 280 try:
277 vulnerable_end = (operator_end == '<=' and Version(pv) <= Version(version_end) ) 281 vulnerable_end = (operator_end == '<=' and Version(pv,suffix) <= Version(version_end,suffix) )
278 vulnerable_end |= (operator_end == '<' and Version(pv) < Version(version_end) ) 282 vulnerable_end |= (operator_end == '<' and Version(pv,suffix) < Version(version_end,suffix) )
279 except: 283 except:
280 bb.warn("%s: Failed to compare %s %s %s for %s" % 284 bb.warn("%s: Failed to compare %s %s %s for %s" %
281 (product, pv, operator_end, version_end, cve)) 285 (product, pv, operator_end, version_end, cve))