Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Jun 2013 20:46:23 +0000 (UTC)
From:      Eitan Adler <eadler@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r321322 - head/security/vuxml/files
Message-ID:  <201306192046.r5JKkNpb069061@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306192046.r5JKkNpb069061>