summaryrefslogtreecommitdiff
path: root/poky/meta/recipes-core/meta/cve-update-db-native.bb
diff options
context:
space:
mode:
Diffstat (limited to 'poky/meta/recipes-core/meta/cve-update-db-native.bb')
-rw-r--r--poky/meta/recipes-core/meta/cve-update-db-native.bb24
1 files changed, 20 insertions, 4 deletions
diff --git a/poky/meta/recipes-core/meta/cve-update-db-native.bb b/poky/meta/recipes-core/meta/cve-update-db-native.bb
index db1d69a28..f27ade40d 100644
--- a/poky/meta/recipes-core/meta/cve-update-db-native.bb
+++ b/poky/meta/recipes-core/meta/cve-update-db-native.bb
@@ -13,8 +13,15 @@ deltask do_install
deltask do_populate_sysroot
python () {
- if not d.getVar("CVE_CHECK_DB_FILE"):
+ cve_check_db_file = d.getVar("CVE_CHECK_DB_FILE")
+ if not cve_check_db_file:
raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.")
+
+ if os.path.exists("%s-journal" % cve_check_db_file ):
+ os.remove("%s-journal" % cve_check_db_file)
+
+ if os.path.exists(cve_check_db_file):
+ os.remove(cve_check_db_file)
}
python do_populate_cve_db() {
@@ -27,7 +34,7 @@ python do_populate_cve_db() {
bb.utils.export_proxies(d)
- BASE_URL = "https://nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-"
+ BASE_URL = "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-"
YEAR_START = 2002
db_file = d.getVar("CVE_CHECK_DB_FILE")
@@ -59,7 +66,13 @@ python do_populate_cve_db() {
json_url = year_url + ".json.gz"
# Retrieve meta last modified date
- response = urllib.request.urlopen(meta_url)
+ try:
+ response = urllib.request.urlopen(meta_url)
+ except urllib.error.URLError as e:
+ cve_f.write('Warning: CVE db update error, Unable to fetch CVE data.\n\n')
+ bb.warn("Failed to fetch CVE data (%s)" % e.reason)
+ return
+
if response:
for l in response.read().decode("utf-8").splitlines():
key, value = l.split(":", 1)
@@ -122,9 +135,12 @@ def parse_node_and_insert(c, node, cveId):
product = cpe23[4]
version = cpe23[5]
- if version != '*':
+ if version != '*' and version != '-':
# Version is defined, this is a '=' match
yield [cveId, vendor, product, version, '=', '', '']
+ elif version == '-':
+ # no version information is available
+ yield [cveId, vendor, product, version, '', '', '']
else:
# Parse start version, end version and operators
op_start = ''