[tor-commits] [stem/master] Undefined _name() method on base Descriptor class

atagar at torproject.org atagar at torproject.org
Fri Dec 5 21:37:22 UTC 2014


commit 90bb28f44929bcb33b321eb51a27bb247c4ae6ab
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri Dec 5 13:25:48 2014 -0800

    Undefined _name() method on base Descriptor class
    
    Methods for parsing router status entries expect a _name() method, but it was
    only defined on the RouterStatusEntry. In theory this sounds good, but
    Microdescriptors use this too. As a result we balk with an AttributeError when
    there's validation issues...
    
      https://trac.torproject.org/projects/tor/ticket/13904
---
 docs/change_log.rst                |    1 +
 stem/descriptor/__init__.py        |    3 +++
 stem/descriptor/microdescriptor.py |    3 +++
 3 files changed, 7 insertions(+)

diff --git a/docs/change_log.rst b/docs/change_log.rst
index e9fcac7..132043b 100644
--- a/docs/change_log.rst
+++ b/docs/change_log.rst
@@ -61,6 +61,7 @@ The following are only available within Stem's `git repository
   * Include '\*.new' files when reading from a Tor data directory (:trac:`13756`)
   * Updated the authorities we list, `replacing turtles with longclaw <https://lists.torproject.org/pipermail/tor-talk/2014-November/035650.html>`_ and `updating gabelmoo's address <https://lists.torproject.org/pipermail/tor-talk/2014-September/034898.html>`_
   * Noting if authorities are also a bandwidth authority or not
+  * Microdescriptor validation issues could result in an AttributeError (:trac:`13904`)
 
  * **Utilities**
 
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index e45ce1e..1527338 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -367,6 +367,9 @@ class Descriptor(object):
   def _set_archive_path(self, path):
     self._archive_path = path
 
+  def _name(self, is_plural = False):
+    return str(type(self))
+
   def __str__(self):
     if stem.prereq.is_python_3():
       return stem.util.str_tools._to_unicode(self._raw_contents)
diff --git a/stem/descriptor/microdescriptor.py b/stem/descriptor/microdescriptor.py
index c3d3db9..4702b84 100644
--- a/stem/descriptor/microdescriptor.py
+++ b/stem/descriptor/microdescriptor.py
@@ -305,6 +305,9 @@ class Microdescriptor(Descriptor):
     if "onion-key" != entries.keys()[0]:
       raise ValueError("Microdescriptor must start with a 'onion-key' entry")
 
+  def _name(self, is_plural = False):
+    return 'microdescriptors' if is_plural else 'microdescriptor'
+
   def _compare(self, other, method):
     if not isinstance(other, Microdescriptor):
       return False



More information about the tor-commits mailing list