summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmilio Pozuelo Monfort <pochu@debian.org>2023-03-20 14:58:00 +0100
committerEmilio Pozuelo Monfort <pochu@debian.org>2023-03-27 10:25:24 +0200
commitc60cc24e47ae0c9532fa59676acabf8fbcba398f (patch)
treeea11f88048b8ab08086cd735a908be795350bd0d
parent69712f5a48bfcb26510dcc281021d1b054a79802 (diff)
sectracker.parsers: make cvelist et al return a list of Bugs
-rwxr-xr-xbin/grab-cve-in-fix2
-rwxr-xr-xbin/merge-cve-files12
-rwxr-xr-xbin/remove-cve-dist-tags7
-rwxr-xr-xbin/update-vuln2
-rw-r--r--lib/python/sectracker/analyzers.py2
-rw-r--r--lib/python/sectracker/parsers.py13
-rw-r--r--lib/python/sectracker_test/test_parsers.py17
7 files changed, 20 insertions, 35 deletions
diff --git a/bin/grab-cve-in-fix b/bin/grab-cve-in-fix
index ec65e776b7..20448a7215 100755
--- a/bin/grab-cve-in-fix
+++ b/bin/grab-cve-in-fix
@@ -85,7 +85,7 @@ class ParseChanges:
def _read_cvelist(self):
os.chdir(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
- data, _ = cvelist("data/CVE/list") # pylint: disable=no-value-for-parameter
+ data = cvelist("data/CVE/list")
for cve in self.cves:
for bug in data:
if bug.header.name == cve:
diff --git a/bin/merge-cve-files b/bin/merge-cve-files
index 7ce47545b5..897eddabb4 100755
--- a/bin/merge-cve-files
+++ b/bin/merge-cve-files
@@ -105,14 +105,6 @@ def merge_annotations(annotations, new_annotation):
return annotations
-def parse_list(path):
- data, messages = cvelist(path)
-
- for m in messages:
- sys.stderr.write(str(m) + "\n")
-
- return data
-
if len(sys.argv) not in (2, 3):
print(f"Usage: {os.path.basename(sys.argv[0])} (CVE/list) extra-cve-list")
sys.exit(1)
@@ -124,8 +116,8 @@ else:
extra_list = sys.argv[-1]
-data = parse_list(main_list)
-extra_data = parse_list(extra_list)
+data = cvelist(main_list)
+extra_data = cvelist(extra_list)
for extra_bug in extra_data:
bug = next(bug for bug in data if bug.header.name == extra_bug.header.name)
diff --git a/bin/remove-cve-dist-tags b/bin/remove-cve-dist-tags
index 170505684b..8b06a12324 100755
--- a/bin/remove-cve-dist-tags
+++ b/bin/remove-cve-dist-tags
@@ -25,11 +25,6 @@ def keep_annotation(cve, annotation):
return True
-def parse_list(path):
- data, messages = cvelist(path)
-
- return data
-
if len(sys.argv) <= 3:
# assume there are no CVEs, so nothing to do
sys.exit(0)
@@ -46,7 +41,7 @@ for release in releases:
if 'maincvefile' in distconfig:
main_list = os.path.dirname(__file__) + '/../' + distconfig['maincvefile']
-data = parse_list(main_list)
+data = cvelist(main_list)
new_data = []
for cve in data:
diff --git a/bin/update-vuln b/bin/update-vuln
index 660d61b9d3..040bc6d47a 100755
--- a/bin/update-vuln
+++ b/bin/update-vuln
@@ -81,7 +81,7 @@ class ParseUpdates:
def _read_cvelist(self):
"""Build a list of Bug items for the CVE from data/CVE/list"""
os.chdir(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
- data, _ = cvelist("data/CVE/list") # pylint: disable=no-value-for-parameter
+ data = cvelist("data/CVE/list")
for cve in self.cves:
for bug in data:
if bug.header.name == cve:
diff --git a/lib/python/sectracker/analyzers.py b/lib/python/sectracker/analyzers.py
index 7df09c4994..641227dd1a 100644
--- a/lib/python/sectracker/analyzers.py
+++ b/lib/python/sectracker/analyzers.py
@@ -30,7 +30,7 @@ def mergelists(listfiles, diag):
in diag."""
result = {}
for listfile in listfiles:
- for bug in listfile.list:
+ for bug in listfile:
header = bug.header
name = header.name
if name in result:
diff --git a/lib/python/sectracker/parsers.py b/lib/python/sectracker/parsers.py
index 2338565548..6b42d4a417 100644
--- a/lib/python/sectracker/parsers.py
+++ b/lib/python/sectracker/parsers.py
@@ -21,6 +21,7 @@ from dataclasses import dataclass
import typing
import traceback
import re
+import sys
from sys import intern
import debian_support
@@ -31,6 +32,8 @@ import sectracker.diagnostics
FORMAT = "5"
+_debug_enabled = False
+
def _sortedtuple(seq):
l = list(seq)
l.sort()
@@ -220,8 +223,6 @@ def _annotationdispatcher():
default=lambda text, diag: diag.error("invalid annotation"))
_annotationdispatcher = _annotationdispatcher()
-List = _namedtuple("List", "list messages")
-
@dataclass
class Header:
line: int
@@ -287,7 +288,13 @@ def _parselist(path, f, parseheader, finish):
if header is not None:
bugs.append(finish(header, headerlineno, anns, diag))
- return List(tuple(bugs), diag.messages())
+
+ if _debug_enabled:
+ for m in diag.messages():
+ sys.stderr.write(str(m) + "\n")
+ print("%s:%d: %s: %s" % (m.file, m.line, m.level, m.message))
+
+ return bugs
@_xpickle.loader("CVE" + FORMAT)
def cvelist(path, f):
diff --git a/lib/python/sectracker_test/test_parsers.py b/lib/python/sectracker_test/test_parsers.py
index 132b4e30e9..4c724ebced 100644
--- a/lib/python/sectracker_test/test_parsers.py
+++ b/lib/python/sectracker_test/test_parsers.py
@@ -25,25 +25,16 @@ assert "bash" in o
assert o["bash"].name == "bash"
assert "bash" in o["bash"].binary
-safeunlink("../../data/CVE/list" + EXTENSION)
-o = cvelist("../../data/CVE/list")
-for err in o.messages:
- print("%s:%d: %s: %s" % (err.file, err.line, err.level, err.message))
+p._debug_enabled = True
safeunlink("../../data/DSA/list" + EXTENSION)
-o = dsalist("../../data/DSA/list")
-for err in o.messages:
- print("%s:%d: %s: %s" % (err.file, err.line, err.level, err.message))
+dsalist("../../data/DSA/list")
safeunlink("../../data/DTSA/list" + EXTENSION)
-o = dtsalist("../../data/DTSA/list")
-for err in o.messages:
- print("%s:%d: %s: %s" % (err.file, err.line, err.level, err.message))
+dtsalist("../../data/DTSA/list")
safeunlink("../../data/DLA/list" + EXTENSION)
-o = dlalist("../../data/DLA/list")
-for err in o.messages:
- print("%s:%d: %s: %s" % (err.file, err.line, err.level, err.message))
+dlalist("../../data/DLA/list")
Message = sectracker.diagnostics.Message
for (line, res, xmsgs) in [

© 2014-2024 Faster IT GmbH | imprint | privacy policy