Florian Weimer
2010-May-09 14:19 UTC
[Secure-testing-commits] r14657 - lib/python/sectracker
Author: fw Date: 2010-05-09 14:19:12 +0000 (Sun, 09 May 2010) New Revision: 14657 Modified: lib/python/sectracker/parsers.py Log: sectracker.parsers._parselist: detect conflict annotations Modified: lib/python/sectracker/parsers.py ==================================================================--- lib/python/sectracker/parsers.py 2010-05-09 14:13:55 UTC (rev 14656) +++ lib/python/sectracker/parsers.py 2010-05-09 14:19:12 UTC (rev 14657) @@ -191,6 +191,8 @@ diag = sectracker.diagnostics.Diagnostics() header = None anns = [] + anns_types = set() + relpkg = set() for line in f.readlines(): lineno += 1 @@ -202,11 +204,30 @@ continue ann = _annotationdispatcher(line, diag) if ann is not None: + # Per-annotation checks (spanning multiple annotaitons) + anns_types.add(ann.type) + if ann.type == "package": + rp = (ann.release, ann.package) + if rp in relpkg: + diag.error("duplicate package annation") + ann = None + else: + relpkg.add(rp) + if ann is not None: anns.append(ann) else: if header is not None: + # Per-bug global checks + if "NOT-FOR-US" in anns_types and "package" in anns_types: + diag.error("NOT-FOR-US conflicts with package annotations", + line=headerlineno) + if "REJECTED" in anns_types and "package" in anns_types: + diag.warning("REJECTED bug has package annotations", + line=headerlineno) bugs.append(finish(header, headerlineno, anns, diag)) del anns[:] + anns_types = set() + relpkg = set() headerlineno = lineno header = parseheader(line)