SVN: security/cve_reader.py
megabajt
megabajt at pld-linux.org
Fri Oct 19 22:32:14 CEST 2007
Author: megabajt
Date: Fri Oct 19 22:32:14 2007
New Revision: 8831
Modified:
security/cve_reader.py
Log:
- split cves and resolved entries into separate nodes
Modified: security/cve_reader.py
==============================================================================
--- security/cve_reader.py (original)
+++ security/cve_reader.py Fri Oct 19 22:32:14 2007
@@ -72,15 +72,15 @@
continue
if lines[i] == "$Log$":
- cve = ""
+ cve = []
cvslog = 1
while i + cvslog < len(lines) and not re.match('^Index\:.*\.spec', lines[i + cvslog]):
if re.match('.*Revision.*', lines[i+cvslog]):
- if cve != "":
+ if len(cve) > 0:
# Save CVEs from the last revision
addCVEnote(rootnode, spec, cve, p[1], p[3])
- cve = ""
+ cve = []
# Set new revison data
p = lines[i+cvslog].split(" ")
else:
@@ -89,11 +89,11 @@
# Good, found CVE entries. Extract them!
cve_list = re.findall("CVE-[0-9\-]+", lines[i+cvslog])
for iter in range(len(cve_list)):
- cve += "%s " % cve_list[iter]
+ cve.append(cve_list[iter])
cvslog = cvslog + 1
- if cve != "":
+ if len(cve) > 0:
addCVEnote(rootnode, spec, cve, p[1], p[3])
# Don't check already checked lines
@@ -111,24 +111,30 @@
fs.close()
def addCVEnote(rootnode, spec, cve, revision, date):
-
- resolved = ""
res = getCVSentry(spec, revision)
-
- if res == 0:
- resolved = revision
- else:
- for i in range(len(res)):
- resolved += "%s " % res[i]
# Generate package node
package = ET.Element("package")
ET.SubElement(package, "date").text = date
ET.SubElement(package, "spec").text = spec
ET.SubElement(package, "revision").text = revision
- ET.SubElement(package, "resolved").text = resolved
- ET.SubElement(package, "cves").text = cve
+
+ resolved = ET.SubElement(package, "resolved")
+ if res == 0:
+ entry = ET.SubElement(resolved, "entry")
+ ET.SubElement(entry, "revision").text = revision
+ else:
+ for i in range(len(res)):
+ data = res[i].split(": ")
+
+ entry = ET.SubElement(resolved, "entry")
+ ET.SubElement(entry, "autotag").text = data[0]
+ ET.SubElement(entry, "revision").text = data[1]
+
+ cves = ET.SubElement(package, "cves")
+ for i in range(len(cve)):
+ ET.SubElement(cves, "entry").text = cve[i]
if len(rootnode) == 0:
# rootnode is empty and has no children. I can easily add new (without sorting)
@@ -239,15 +245,22 @@
end = RSSITEMS
for item in range(end):
- pkg = getPackageData(rootnode[item], ['date', 'spec', 'revision', 'cves'])
+ pkg = getPackageData(rootnode[item], ['date', 'spec', 'revision'])
+
+ # retrives CVEs
+ cves = ""
+ idx = getTagIndex(rootnode[item], 'cves')
+ for i in range(len(rootnode[item][idx])):
+ cves += "%s " % rootnode[item][idx][i].text
+
# date[0] - year; date[1] - month; date[2] - day
date = pkg['date'].split('/')
rssitem.insert(0,
PyRSS2Gen.RSSItem(
title = "New CVE fixes for %s" % pkg['spec'],
- description = "%s on rev. %s resolves: %s" % (pkg['spec'], pkg['revision'], pkg['cves']),
+ description = "%s on rev. %s resolves: %s" % (pkg['spec'], pkg['revision'], cves),
pubDate = datetime.datetime(int(date[0]), int(date[1]), int(date[2]), 0, 0, 0)
)
)
More information about the pld-cvs-commit
mailing list