[tor-commits] [stem/master] Explicitly test negative VPADDING sizes
atagar at torproject.org
atagar at torproject.org
Sun Jun 17 00:23:10 UTC 2018
commit 9040cf46b24946d9cc3a96ab25e5a0af506cdad6
Author: Damian Johnson <atagar at torproject.org>
Date: Sat Jun 16 11:03:08 2018 -0700
Explicitly test negative VPADDING sizes
Nitpickiest of nitpicks...
* Explicitly checking for negative VPADDING sizes so we can an error message
that includes the argument.
* Testing for negative sizes in our unit tests.
* Flatten our validation checks a bit.
---
stem/client/cell.py | 13 ++++++-------
test/unit/client/cell.py | 2 +-
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/stem/client/cell.py b/stem/client/cell.py
index d5e71e8a..61503c40 100644
--- a/stem/client/cell.py
+++ b/stem/client/cell.py
@@ -586,15 +586,14 @@ class VPaddingCell(Cell):
IS_FIXED_SIZE = False
def __init__(self, size = None, payload = None):
- if payload is None:
- if size is not None:
- payload = os.urandom(size) # enforces size >= 0
- else:
- raise ValueError('VPaddingCell constructor must specify payload or size')
- elif size is not None and size != len(payload):
+ if size is None and payload is None:
+ raise ValueError('VPaddingCell constructor must specify payload or size')
+ elif size is not None and size < 0:
+ raise ValueError('VPaddingCell size (%s) cannot be negative' % size)
+ elif size is not None and payload is not None and size != len(payload):
raise ValueError('VPaddingCell constructor specified both a size of %i bytes and payload of %i bytes' % (size, len(payload)))
- self.payload = payload
+ self.payload = payload if payload is not None else os.urandom(size)
def pack(self, link_protocol):
return VPaddingCell._pack(link_protocol, self.payload)
diff --git a/test/unit/client/cell.py b/test/unit/client/cell.py
index 785d48d2..2123cd6f 100644
--- a/test/unit/client/cell.py
+++ b/test/unit/client/cell.py
@@ -221,7 +221,7 @@ class TestCell(unittest.TestCase):
self.assertEqual(b'', empty_constructed_cell.payload)
self.assertRaisesRegexp(ValueError, 'VPaddingCell constructor specified both a size of 5 bytes and payload of 1 bytes', VPaddingCell, 5, '\x02')
-
+ self.assertRaisesRegexp(ValueError, re.escape('VPaddingCell size (-15) cannot be negative'), VPaddingCell, -15)
self.assertRaisesRegexp(ValueError, '^%s$' % re.escape('VPaddingCell constructor must specify payload or size'), VPaddingCell)
def test_certs_cell(self):
More information about the tor-commits
mailing list