summaryrefslogtreecommitdiffstats
path: root/meta/classes/cve-check.bbclass
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2019-07-17 11:45:36 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-07-18 12:15:51 +0100
commite6bf90009877d00243417898700d2320fd87b39c (patch)
treef5076cbe1fe797546dbbf228eaeec98257bb3f1d /meta/classes/cve-check.bbclass
parent2501fb402260d5d3929bffee78a1127dad2d538e (diff)
downloadopenembedded-core-contrib-e6bf90009877d00243417898700d2320fd87b39c.tar.gz
cve-check: allow comparison of Vendor as well as Product
Some product names are too vague to be searched without also matching the vendor, for example Flex could be the parser compiler we ship, or Adobe Flex, or Apache Flex, or IBM Flex. If entries in CVE_PRODUCT contain a colon then split it as vendor:product to improve the search. Also don't use .format() to construct SQL as that can lead to security issues. Instead, use ? placeholders and lets sqlite3 handle the escaping. Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/cve-check.bbclass')
-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 2a1381604a..e8668b2566 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -190,12 +190,16 @@ def check_cves(d, patched_cves):
import sqlite3
db_file = d.getVar("CVE_CHECK_DB_FILE")
conn = sqlite3.connect(db_file)
- c = conn.cursor()
-
- query = "SELECT * FROM PRODUCTS WHERE PRODUCT IS '{0}';"
for product in products:
- for row in c.execute(query.format(product, pv)):
+ c = conn.cursor()
+ if ":" in product:
+ vendor, product = product.split(":", 1)
+ c.execute("SELECT * FROM PRODUCTS WHERE PRODUCT IS ? AND VENDOR IS ?", (product, vendor))
+ else:
+ c.execute("SELECT * FROM PRODUCTS WHERE PRODUCT IS ?", (product,))
+
+ for row in c:
cve = row[1]
version_start = row[4]
operator_start = row[5]