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)
                        )
                )
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to