|
@@ -25,7 +25,7 @@ python do_populate_cve_db() {
|
|
|
YEAR_START = 2002
|
|
|
|
|
|
db_dir = d.getVar("DL_DIR") + '/CVE_CHECK'
|
|
|
- db_file = db_dir + '/nvdcve.db'
|
|
|
+ db_file = db_dir + '/nvdcve_1.0.db'
|
|
|
json_tmpfile = db_dir + '/nvd.json.gz'
|
|
|
proxy = d.getVar("https_proxy")
|
|
|
cve_f = open(d.getVar("TMPDIR") + '/cve_check', 'a')
|
|
@@ -60,6 +60,10 @@ python do_populate_cve_db() {
|
|
|
c.execute("select DATE from META where YEAR = ?", (year,))
|
|
|
meta = c.fetchone()
|
|
|
if not meta or meta[0] != last_modified:
|
|
|
+ # Clear products table entries corresponding to current year
|
|
|
+ cve_year = 'CVE-' + str(year) + '%'
|
|
|
+ c.execute("delete from PRODUCTS where ID like ?", (cve_year,))
|
|
|
+
|
|
|
# Update db with current year json file
|
|
|
req = urllib.request.Request(json_url)
|
|
|
if proxy:
|
|
@@ -86,27 +90,16 @@ python do_populate_cve_db() {
|
|
|
conn.close()
|
|
|
}
|
|
|
|
|
|
-# DJB2 hash algorithm
|
|
|
-def hash_djb2(s):
|
|
|
- hash = 5381
|
|
|
- for x in s:
|
|
|
- hash = (( hash << 5) + hash) + ord(x)
|
|
|
-
|
|
|
- return hash & 0xFFFFFFFF
|
|
|
-
|
|
|
def initialize_db(c):
|
|
|
c.execute("CREATE TABLE IF NOT EXISTS META (YEAR INTEGER UNIQUE, DATE TEXT)")
|
|
|
c.execute("CREATE TABLE IF NOT EXISTS NVD (ID TEXT UNIQUE, SUMMARY TEXT, \
|
|
|
SCOREV2 TEXT, SCOREV3 TEXT, MODIFIED INTEGER, VECTOR TEXT)")
|
|
|
- c.execute("CREATE TABLE IF NOT EXISTS PRODUCTS (HASH INTEGER UNIQUE, ID TEXT, \
|
|
|
+ c.execute("CREATE TABLE IF NOT EXISTS PRODUCTS (ID TEXT, \
|
|
|
VENDOR TEXT, PRODUCT TEXT, VERSION_START TEXT, OPERATOR_START TEXT, \
|
|
|
VERSION_END TEXT, OPERATOR_END TEXT)")
|
|
|
|
|
|
def insert_elt(c, db_values):
|
|
|
- product_str = db_values[0] + db_values[1] + db_values[2] + db_values[3]
|
|
|
- hashstr = hash_djb2(product_str)
|
|
|
- db_values.insert(0, hashstr)
|
|
|
- query = "insert or replace into PRODUCTS values (?, ?, ?, ?, ?, ?, ?, ?)"
|
|
|
+ query = "insert into PRODUCTS values (?, ?, ?, ?, ?, ?, ?)"
|
|
|
c.execute(query, db_values)
|
|
|
|
|
|
def parse_node_and_insert(c, node, cveId):
|