aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRobert Buchholz <rbu@gentoo.org>2008-05-08 16:56:12 +0000
committerRobert Buchholz <rbu@gentoo.org>2008-05-08 16:56:12 +0000
commitf6c243e411c2db0ef58d40ad83e433fefcc4bef1 (patch)
tree453ee48e80970517b721879a6246310691ccf53f /lib
parentMITRE sync (diff)
downloadsecurity-f6c243e411c2db0ef58d40ad83e433fefcc4bef1.tar.gz
security-f6c243e411c2db0ef58d40ad83e433fefcc4bef1.tar.bz2
security-f6c243e411c2db0ef58d40ad83e433fefcc4bef1.zip
Refactored for some perfomance improvements in the code.
svn path=/; revision=509
Diffstat (limited to 'lib')
-rw-r--r--lib/python/nvd.py56
1 files changed, 47 insertions, 9 deletions
diff --git a/lib/python/nvd.py b/lib/python/nvd.py
index 5418e2f..e7f421a 100644
--- a/lib/python/nvd.py
+++ b/lib/python/nvd.py
@@ -44,11 +44,40 @@ class _Parser(xml.sax.handler.ContentHandler):
self.start_dispatcher.get(name, self._noop)(name, attrs)
def TAG_entry(self, name, attrs):
- self.name = attrs['name'].encode('utf-8')
- self.published = attrs['published'].encode('utf-8')
- self.modified = attrs.get('modified', str(datetime.date.today())).encode('utf-8')
- self.severity = attrs.get('severity', u'').encode('utf-8')
- self.discovered = attrs.get('discovered', u'').encode('utf-8')
+ try:
+ self.name = attrs['name']
+ if not isinstance(self.name, unicode):
+ self.name = self.name.encode('utf-8')
+ except KeyError:
+ pass
+
+ try:
+ self.published = attrs['published']
+ if not isinstance(self.published, unicode):
+ self.published = self.published.encode('utf-8')
+ except KeyError:
+ pass
+
+ try:
+ self.modified = attrs['modified']
+ if not isinstance(self.modified, unicode):
+ self.modified = self.modified.encode('utf-8')
+ except KeyError:
+ self.modified = str(datetime.date.today()).encode('utf-8')
+
+ try:
+ self.severity = attrs['severity']
+ if not isinstance(self.severity, unicode):
+ self.severity = self.severity.encode('utf-8')
+ except KeyError:
+ self.severity = u''
+
+ try:
+ self.discovered = attrs['discovered']
+ if not isinstance(self.discovered, unicode):
+ self.discovered = self.discovered.encode('utf-8')
+ except KeyError:
+ self.discovered = u''
self.cve_desc = ""
self.range_local = self.range_network = self.range_local_network \
@@ -87,10 +116,19 @@ class _Parser(xml.sax.handler.ContentHandler):
if attrs.has_key('other'):
self.loss_sec_prot_other = 1
def TAG_prod(self, name, attrs):
- if attrs.has_key('name'):
- self.product_name = attrs['name'].encode('utf-8')
- if attrs.has_key('vendor'):
- self.product_vendor = attrs['vendor'].encode('utf-8')
+ try:
+ self.product_name = attrs['name']
+ if not isinstance(self.product_name, unicode):
+ self.product_name = self.product_name.encode('utf-8')
+ except KeyError:
+ pass
+
+ try:
+ self.product_vendor = attrs['vendor']
+ if not isinstance(self.product_vendor, unicode):
+ self.product_vendor = self.product_vendor.encode('utf-8')
+ except KeyError:
+ pass
def endElement(self, name):
if name == 'entry':