23
23
import urllib2 as request
24
24
25
25
from collections import namedtuple
26
- from .log import LOGGER
26
+ from string import ascii_lowercase
27
+ from cve_bin_tool .log import LOGGER
27
28
from pkg_resources import parse_version
28
29
29
30
logging .basicConfig (level = logging .DEBUG )
@@ -268,10 +269,7 @@ def get_cves(self, vendor, product, version):
268
269
query = """SELECT CVE_number FROM cve_range WHERE
269
270
vendor=? AND product=? AND version=?"""
270
271
cursor .execute (query , [vendor , product , version ])
271
- # FIXME: this seems inefficient
272
- cve_list = []
273
- for cve in cursor :
274
- cve_list .append (cve [0 ])
272
+ cve_list = list (map (lambda x : x [0 ], cursor .fetchall ()))
275
273
276
274
# Check for any ranges
277
275
query = """SELECT CVE_number, versionStartIncluding, versionStartExcluding, versionEndIncluding, versionEndExcluding FROM cve_range WHERE
@@ -297,6 +295,7 @@ def get_cves(self, vendor, product, version):
297
295
versionEndExcluding = self .openssl_convert (versionEndExcluding )
298
296
299
297
parsed_version = parse_version (version )
298
+
300
299
# check the start range
301
300
passes_start = False
302
301
if (
@@ -336,21 +335,17 @@ def get_cves(self, vendor, product, version):
336
335
):
337
336
# then there is no end range so it passes
338
337
passes_end = True
339
-
340
338
# if it fits into both ends of the range, add the cve number
341
339
if passes_start and passes_end :
342
340
cve_list .append (cve_number )
343
341
344
342
# Go through and get all the severities
345
343
if cve_list :
346
- query = f'SELECT CVE_number, severity from cve_severity where CVE_number IN ({ "," .join ("?" for i in cve_list )} ) ORDER BY CVE_number ASC'
344
+ query = f'SELECT CVE_number, severity from cve_severity where CVE_number IN ({ "," .join ([ "?" ] * len ( cve_list ) )} ) ORDER BY CVE_number ASC'
347
345
cursor .execute (query , cve_list )
348
346
# Everything expects a data structure of cve[number] = severity so you can search through keys
349
347
# and do other easy manipulations
350
- severity_list = dict ()
351
- for cve_id , severity in cursor :
352
- severity_list [cve_id ] = severity
353
- return severity_list
348
+ return dict (cursor )
354
349
355
350
return cve_list
356
351
@@ -361,10 +356,7 @@ def openssl_convert(self, version):
361
356
return version
362
357
363
358
lastchar = version [len (version ) - 1 ]
364
- letters = {
365
- letter : str (index )
366
- for index , letter in enumerate ("abcdefghijklmnopqrstuvwxyz" )
367
- }
359
+ letters = dict (zip (ascii_lowercase , range (26 )))
368
360
369
361
if lastchar in letters :
370
362
version = f"{ version [0 : len (version ) - 1 ]} .{ letters [lastchar ]} "
0 commit comments