From c60cc24e47ae0c9532fa59676acabf8fbcba398f Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Mon, 20 Mar 2023 14:58:00 +0100 Subject: sectracker.parsers: make cvelist et al return a list of Bugs --- lib/python/sectracker/analyzers.py | 2 +- lib/python/sectracker/parsers.py | 13 ++++++++++--- lib/python/sectracker_test/test_parsers.py | 17 ++++------------- 3 files changed, 15 insertions(+), 17 deletions(-) (limited to 'lib') 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 [ -- cgit v1.2.3