[tor-commits] [stem/master] Slight wording fixes regarding payload/cell size

atagar at torproject.org atagar at torproject.org
Sun Jun 17 00:23:10 UTC 2018


commit 1f4ae95d7acf4171cd6da8abbb858e31cccb3cd9
Author: Dave Rolek <dmr-x at riseup.net>
Date:   Wed May 30 20:04:34 2018 +0000

    Slight wording fixes regarding payload/cell size
    
    This ValueError also didn't have a test to it, so add one.
---
 stem/client/cell.py      |  4 ++--
 test/unit/client/cell.py | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/stem/client/cell.py b/stem/client/cell.py
index a679968e..b90fb7a6 100644
--- a/stem/client/cell.py
+++ b/stem/client/cell.py
@@ -186,7 +186,7 @@ class Cell(object):
 
     :return: **bytes** with the encoded payload
 
-    :raise: **ValueError** if cell type invalid or payload is too large
+    :raise: **ValueError** if cell type invalid or payload makes cell too large
     """
 
     if isinstance(cls, CircuitCell) and circ_id is None:
@@ -204,7 +204,7 @@ class Cell(object):
 
     if cls.IS_FIXED_SIZE:
       if len(cell) > link_protocol.fixed_cell_len:
-        raise ValueError('Payload of %s is too large (%i bytes), must be less than %i' % (cls.NAME, len(cell), link_protocol.fixed_cell_len))
+        raise ValueError('Cell of type %s is too large (%i bytes), must not be more than %i. Check payload size (was %i bytes)' % (cls.NAME, len(cell), link_protocol.fixed_cell_len, len(payload)))
 
       cell += ZERO * (link_protocol.fixed_cell_len - len(cell))
 
diff --git a/test/unit/client/cell.py b/test/unit/client/cell.py
index 2fe05369..d36500cc 100644
--- a/test/unit/client/cell.py
+++ b/test/unit/client/cell.py
@@ -114,6 +114,20 @@ class TestCell(unittest.TestCase):
     # that's probably not worth it; instead we'll use the instance method _unpack()
     self.assertRaisesRegexp(NotImplementedError, '^%s$' % re.escape('Unpacking not yet implemented for UNIMPLEMENTED cells'), instance._unpack, b'dummy', 0, 2)
 
+  def test_payload_too_large(self):
+    class OversizedCell(Cell):
+      NAME = 'OVERSIZED'
+      VALUE = 127  # currently nonsense, but potentially will be allocated in the distant future
+      IS_FIXED_SIZE = True
+
+      def pack(self, link_protocol):
+        return OversizedCell._pack(link_protocol, ZERO * (FIXED_PAYLOAD_LEN + 1))
+
+    instance = OversizedCell()
+
+    expected_message = 'Cell of type OVERSIZED is too large (%i bytes), must not be more than %i. Check payload size (was %i bytes)' % (FIXED_PAYLOAD_LEN + 4, FIXED_PAYLOAD_LEN + 3, FIXED_PAYLOAD_LEN + 1)
+    self.assertRaisesRegexp(ValueError, '^%s$' % re.escape(expected_message), instance.pack, 2)
+
   def test_unpack_for_new_link(self):
     expected_certs = (
       (CertType.LINK, 1, b'0\x82\x02F0\x82\x01\xaf'),





More information about the tor-commits mailing list