svn commit: r321322 - head/security/vuxml/files
Eitan Adler
eadler at FreeBSD.org
Wed Jun 19 20:46:24 UTC 2013
Author: eadler
Date: Wed Jun 19 20:46:23 2013
New Revision: 321322
URL: http://svnweb.freebsd.org/changeset/ports/321322
Log:
Add an additional validation script to the vuxml port.
At this point it is not tied to the validate: target because validation fails.
Reviewed by: simon, delphij
With Hat: ports-secteam
Added:
head/security/vuxml/files/extra-validation.py (contents, props changed)
Added: head/security/vuxml/files/extra-validation.py
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/security/vuxml/files/extra-validation.py Wed Jun 19 20:46:23 2013 (r321322)
@@ -0,0 +1,69 @@
+#!/usr/bin/env python3
+# $FreeBSD$
+
+import datetime
+import xml.etree.ElementTree as ET
+import sys
+
+tree = ET.parse('../vuln.xml')
+root = tree.getroot()
+
+namespace = "{http://www.vuxml.org/apps/vuxml-1}"
+
+ret = 0
+
+
+def dateof(string):
+ return datetime.datetime.strptime(string, "%Y-%m-%d")
+
+all_vids = set()
+
+
+for vuln in root:
+ vid = vuln.get("vid")
+
+ cancelled = False if vuln.find(namespace+"cancelled") is None else True
+ if cancelled:
+ continue
+
+ # Validate Vids
+ if vid in all_vids:
+ print("Error: duplicate vid : {0}".format(vid))
+ all_vids.add(vid)
+
+ # Validate References
+ references = vuln.find(namespace+"references")
+ if references is None:
+ print("Error: references is None : {0}".format(vid))
+ ret = 1
+ else:
+ prev = references[0]
+ for reference in references:
+ if reference.tag < prev.tag:
+ #print("Warn: tags out of order ({1} and {2}): {0}".format(vid, prev.tag[len(namespace):], reference.tag[len(namespace):]))
+ pass
+ prev = reference
+
+ # Validate Dates
+ dates = vuln.find(namespace+"dates")
+ if dates is None:
+ print("Error: no date : {0}".format(vid))
+ ret = 1
+ else:
+ discovery = dates.find(namespace+"discovery")
+ entry = dates.find(namespace+"entry")
+ modified = dates.find(namespace+"modified")
+ if discovery is None:
+ print("Error: discovery is None : {0}".format(vid))
+ ret = 1
+ elif entry is None:
+ print("Error: entry is None : {0}".format(vid))
+ ret = 1
+ else:
+ if modified is None:
+ modified = entry
+ if not (dateof(discovery.text) <= dateof(entry.text) <= dateof(modified.text)):
+ print("Error: dates are insane : {0}".format(vid))
+ ret = 1
+
+sys.exit(ret)
More information about the svn-ports-head
mailing list