[Secure-testing-commits] r50230 - bin
Salvatore Bonaccorso
carnil at moszumanska.debian.org
Fri Mar 31 19:23:10 UTC 2017
Author: carnil
Date: 2017-03-31 19:23:09 +0000 (Fri, 31 Mar 2017)
New Revision: 50230
Modified:
bin/report-vuln
Log:
Import improvements to report-vuln done by Antoine Beaupr?\195?\169
Modified: bin/report-vuln
===================================================================
--- bin/report-vuln 2017-03-31 17:47:58 UTC (rev 50229)
+++ bin/report-vuln 2017-03-31 19:23:09 UTC (rev 50230)
@@ -19,6 +19,7 @@
#
# export http_proxy if you need to use an http proxy to report bugs
+import argparse
import sys, re, urllib, os
temp_id = re.compile('(?:CVE|cve)\-[0-9]{4}-XXXX')
@@ -112,7 +113,7 @@
return ret + '\n'
-def gen_text(pkg, cveid, include_version = False, severity = 'FILLINSEVERITY'):
+def gen_text(pkg, cveid, blanks = False, severity = 'FILLINSEVERITY', affected=None, cc=False, cclist=None):
vuln_suff = 'y'
cve_suff = ''
time_w = 'was'
@@ -124,8 +125,13 @@
time_w = 'were'
header = '''Package: %s\n''' % (pkg)
- if include_version:
- header += 'Version: FILLINAFFECTEDVERSION\n'
+ if affected is None:
+ if blanks:
+ header += "Version: FILLINAFFECTEDVERSION\n"
+ else:
+ header += "Version: %s\n" % affected
+ if cc and len(cclist) > 0:
+ header += "X-Debbugs-CC: %s\n" % " ".join(cclist)
header += '''Severity: %s
Tags: security
@@ -160,31 +166,54 @@
print '\nhttps://security-tracker.debian.org/tracker/source-package/%s' % (pkg)
print '(issues without CVE id are assigned a TEMP one, but it may change over time)\n'
- if not include_version:
- print '''Please adjust the affected versions in the BTS as needed.\n'''
+ if not blanks:
+ print '''\nPlease adjust the affected versions in the BTS as needed.\n'''
def error(msg):
print 'error: ' + msg
sys.exit(1)
-def usage():
- print sys.argv[0], '[--no-blanks] <pkg> <cve id(s)>'
- sys.exit(0)
+class NegateAction(argparse.Action):
+ '''add a toggle flag to argparse
+ this is similar to 'store_true' or 'store_false', but allows
+ arguments prefixed with --no to disable the default. the default
+ is set depending on the first argument - if it starts with the
+ negative form (define by default as '--no'), the default is False,
+ otherwise True.
+ '''
+
+ negative = '--no'
+
+ def __init__(self, option_strings, *args, **kwargs):
+ '''set default depending on the first argument'''
+ default = not option_strings[0].startswith(self.negative)
+ super(NegateAction, self).__init__(option_strings, *args,
+ default=default, nargs=0, **kwargs)
+
+ def __call__(self, parser, ns, values, option):
+ '''set the truth value depending on whether
+ it starts with the negative form'''
+ setattr(ns, self.dest, not option.startswith(self.negative))
+
+
def main():
- if len(sys.argv) < 3:
- usage()
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--no-blanks', '--blanks', dest='blanks', action=NegateAction,
+ help='include blank fields to be filled (default: %(default)s)')
+ parser.add_argument('--affected', help='affected version (default: unspecified)')
+ parser.add_argument('--severity', default='grave', help='severity (default: %(default)s)')
+ parser.add_argument('--no-cc', '--cc', dest='cc', action=NegateAction,
+ help='add X-Debbugs-CC header to')
+ parser.add_argument('--cc-list', dest='cclist', default=['team at security.debian.org', 'secure-testing-team at lists.alioth.debian.org'],
+ help='list of addres to add in CC (default: %(default)s)')
+ parser.add_argument('pkg', help='affected package')
+ parser.add_argument('cve', nargs='+', help='relevant CVE for this issue, may be used multiple time if the issue has multiple CVEs')
+ args = parser.parse_args()
- blanks = True
- if sys.argv[1] == '--no-blanks':
- if len(sys.argv) < 4:
- usage()
- blanks = False
- pkg = sys.argv[2]
- cve = sys.argv[3:]
- else:
- pkg = sys.argv[1]
- cve = sys.argv[2:]
+ blanks = args.blanks
+ pkg = args.pkg
+ cve = args.cve
# check for valid parameters
p = re.compile('^[0-9a-z].*')
@@ -197,10 +226,7 @@
if not c.match(arg) and not temp_id.match(arg):
error(arg + ' does not seem to be a valid CVE id')
- if blanks:
- gen_text(pkg, cve)
- else:
- gen_text(pkg, cve, False, 'grave')
+ gen_text(pkg, cve, affected=args.affected, blanks=args.blanks, severity=args.severity, cc=args.cc, cclist=args.cclist)
if __name__ == '__main__':
main()
More information about the Secure-testing-commits
mailing list