[Oval-commits] r77 - in trunk/tools/oval: definition parser

Pavel Vinogradov blaze-guest at alioth.debian.org
Fri Jul 13 16:00:27 UTC 2007


Author: blaze-guest
Date: 2007-07-13 16:00:27 +0000 (Fri, 13 Jul 2007)
New Revision: 77

Modified:
   trunk/tools/oval/definition/generator.py
   trunk/tools/oval/parser/dsa.py
Log:
Fix handling of bugged dsa data files.

Modified: trunk/tools/oval/definition/generator.py
===================================================================
--- trunk/tools/oval/definition/generator.py	2007-07-12 17:57:59 UTC (rev 76)
+++ trunk/tools/oval/definition/generator.py	2007-07-13 16:00:27 UTC (rev 77)
@@ -198,6 +198,9 @@
 		
 		return Generated XML fragment
 	"""
+	#Raise excetion if we receive too small data
+	if len(data) == 0:
+		raise Exception
 	
 	softwareCriteria = __createXMLElement ("criteria", attrs = {"comment" : "Release section", "operator" : "AND"})
 	softwareCriteria.appendChild ( __createXMLElement ("criterion", attrs={"test_ref" : __createTest("release", release), "comment" : "Debian %s is installed" % release}))
@@ -344,7 +347,6 @@
 		dsa -- DSA dentificator
 		dsaref -- DSA parsed data
 	"""	
-
 	doc = xml.dom.minidom.Document ()
 
 	### Definition block: Metadata, Notes, Criteria
@@ -363,6 +365,7 @@
 		affected.appendChild ( __createXMLElement ("product", dsaref.get("package")))
 	except:
 		logging.log (logging.WARNING, "packages None in DSA " + dsa)
+		raise Exception
 		
 	metadata.appendChild (affected)
 	### Definition : Metadata : Affected : END ###
@@ -377,7 +380,7 @@
 	else:
 		logging.log(logging.WARNING, "Secrefs None in DSA " + dsa)
 	
-	#TODO: this could be extracted from the wml file....
+	#TODO: move this info to other place
 	metadata.appendChild ( __createXMLElement ("description", dsaref["moreinfo"]) )
 	definition.appendChild ( metadata )
 
@@ -427,8 +430,11 @@
 	keyids = dsaref.keys()
 	keyids.sort()
 	for dsa in keyids:
-		definitions.appendChild (createDefinition(dsa, dsaref[dsa]))
-
+		try:
+			definitions.appendChild (createDefinition(dsa, dsaref[dsa]))
+		except Exception:
+			logging.log (logging.WARNING, "DSA %s bugged" % dsa)
+			
 	root.appendChild (definitions)
 	
 	root.appendChild(tests)

Modified: trunk/tools/oval/parser/dsa.py
===================================================================
--- trunk/tools/oval/parser/dsa.py	2007-07-12 17:57:59 UTC (rev 76)
+++ trunk/tools/oval/parser/dsa.py	2007-07-13 16:00:27 UTC (rev 77)
@@ -83,8 +83,12 @@
 		result = versionpatern.search (line)
 		if result:
 			deb_ver = result.groups()[0]
+			#TODO: Second release section
 			if data.has_key("packages"):
-				data["packages"][deb_ver] = {}
+				if data["packages"].has_key(deb_ver):
+					logging.log(logging.WARNING, "DSA %s contain second files section for release %s" % (dsa, deb_ver))
+				else:
+					data["packages"][deb_ver] = {}
 			else:
 				data["packages"] = {deb_ver: {}}
 		# Binary packages are pushed into array
@@ -93,7 +97,7 @@
 		# (that should be fixed)
 		if data.has_key("package") and deb_ver:
 			#urlpatern = re.compile (r'fileurl [\w:/.]+/([^/]*?)\.deb[ >]')
-			urlpatern = re.compile (r'fileurl [\w:/.\-+]+/([\w\-.+~:]+)\.deb[^i]')
+			urlpatern = re.compile (r'fileurl [\w:/.\-+]+/([\w\-.+~]+)\.deb[^i]')
 			result = urlpatern.search (line)
 			if result:
 				(package, version, architecture) = result.groups()[0].split("_")




More information about the Oval-commits mailing list