in aristotle/aristotle.py [0:0]
def cve_compare(self, left_val, right_val, cmp_operator):
"""Compare CVE values given comparison operator.
May have unexpected results if CVE values (left_val, right_val) not formatted as CVE numbers.
Returns boolean.
"""
try:
if '-' not in left_val:
lyear = int(left_val)
if cmp_operator[0] == '<':
if len(cmp_operator) > 1 and cmp_operator[1] == '=':
lseq = float('-inf')
else:
lseq = float('inf')
else:
if len(cmp_operator) > 1 and cmp_operator[1] == '=':
lseq = float('inf')
else:
lseq = float('-inf')
else:
lyear, lseq = [int(v) for v in left_val.split('-', 1)]
if '-' not in right_val:
ryear = int(right_val)
if cmp_operator[0] == '<':
if len(cmp_operator) > 1 and cmp_operator[1] == '=':
rseq = float('inf')
else:
rseq = float('-inf')
else:
if len(cmp_operator) > 1 and cmp_operator[1] == '=':
rseq = float('-inf')
else:
rseq = float('inf')
else:
ryear, rseq = [int(v) for v in right_val.split('-', 1)]
if len(cmp_operator) > 1 and cmp_operator[1] == '=':
if cmp_operator[0] == '<':
rseq += 1
else:
lseq += 1
if cmp_operator[0] == '<':
if lyear == ryear:
return lseq < rseq
else:
return lyear < ryear
if cmp_operator[0] == '>':
if lyear == ryear:
return lseq > rseq
else:
return lyear > ryear
return False
except Exception as e:
print_error("Unable to do CVE comparison '{} {} {}':\n{}".format(left_val, cmp_operator, right_val, e), fatal=True)