[Secure-testing-commits] r19983 - bin

Raphael Geissert geissert at alioth.debian.org
Mon Aug 20 01:41:27 UTC 2012


Author: geissert
Date: 2012-08-20 01:41:26 +0000 (Mon, 20 Aug 2012)
New Revision: 19983

Modified:
   bin/report-vuln
Log:
Allow report-vuln to report issues without CVE ids

USAGE: bin/report-vuln src-pkg CVE-2012-XXXX

Specify as many CVE-less entries as the number of issues to report.
E.g. to report two issues without CVE id against foo:
bin/report-vuln foo CVE-2012-XXXX CVE-2012-XXXX

NOTE: Make sure you add a description to the CVE/list entries!



Modified: bin/report-vuln
===================================================================
--- bin/report-vuln	2012-08-20 00:24:02 UTC (rev 19982)
+++ bin/report-vuln	2012-08-20 01:41:26 UTC (rev 19983)
@@ -15,23 +15,41 @@
 
 import sys, re, urllib, os
 
+temp_id = re.compile('(?:CVE|cve)\-[0-9]{4}-XXXX')
+
 def setup_path():
 	dirname = os.path.dirname
 	base = dirname(dirname(os.path.realpath(sys.argv[0])))
 	sys.path.insert(0, os.path.join(base, "lib", "python"))
 
-def description_from_list(id):
+def description_from_list(id, pkg = '', skip_entries = 0):
 	setup_path()
 	import bugs
 	import debian_support
+	is_temp = temp_id.match(id)
+	skipped = 0
+
 	for bug in bugs.CVEFile(debian_support.findresource(
 			    *"data CVE list".split())):
-		if bug.name == id:
+		if bug.name == id or (is_temp and not bug.isFromCVE()):
+			if pkg != '':
+				matches = False
+				for n in bug.notes:
+					if n.package == pkg:
+						matches = True
+						break
+				if not matches:
+					continue
+			if skipped < skip_entries:
+				skipped += 1
+				continue
 			return bug.description
 
 def gen_index(ids):
 	ret = ''
 	for cnt, id in enumerate(ids):
+		if temp_id.match(id):
+			continue
 		ret += '\n[' + str(cnt) + '] http://cve.mitre.org/cgi-bin/cvename.cgi?name=' + id + '\n'
 		ret += '    http://security-tracker.debian.org/tracker/' + id
 
@@ -92,6 +110,7 @@
 	vuln_suff = 'y'
 	cve_suff = ''
 	time_w = 'was'
+	temp_id_cnt = 0
 
 	if len(cveid) > 1:
 		cve_suff = 's'
@@ -115,12 +134,25 @@
 
 	print header
 	for cnt, cve in enumerate(cveid):
-		print cve + '[' + str(cnt) + ']:'
-		print get_cve(cve)
+		if not temp_id.match(cve):
+			print cve + '[' + str(cnt) + ']:'
+			print get_cve(cve)
+		else:
+			print '''Issue without CVE id #%d [%d]:''' % (temp_id_cnt, cnt)
+			desc = description_from_list(cve, pkg, temp_id_cnt)
+			if desc:
+				print desc + '\n'
+			else:
+				print 'No description has been specified\n'
+			temp_id_cnt += 1
 
 	print footer
 	print gen_index(cveid)
 
+	if temp_id_cnt > 0:
+		print '\nhttp://security-tracker.debian.org/tracker/source-package/%s' % (pkg)
+		print '(issues without id are assigned a temporary one that may change over time)\n'
+
 def error(msg):
 	print 'error: ' + msg
 	sys.exit(1)
@@ -144,7 +176,7 @@
 		error(pkg + ' does not seem to be a valid source package name')
 
 	for arg in cve:
-		if not c.match(arg):
+		if not c.match(arg) and not temp_id.match(arg):
 			error(arg + ' does not seem to be a valid CVE id')
 
 	gen_text(pkg, cve)




More information about the Secure-testing-commits mailing list