diff options
author | 2008-05-08 16:56:12 +0000 | |
---|---|---|
committer | 2008-05-08 16:56:12 +0000 | |
commit | f6c243e411c2db0ef58d40ad83e433fefcc4bef1 (patch) | |
tree | 453ee48e80970517b721879a6246310691ccf53f /lib | |
parent | MITRE sync (diff) | |
download | security-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.py | 56 |
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': |