summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/asynchat.py2
-rw-r--r--Lib/test/test_asynchat.py8
2 files changed, 10 insertions, 0 deletions
diff --git a/Lib/asynchat.py b/Lib/asynchat.py
index 682dbd7..6e16891 100644
--- a/Lib/asynchat.py
+++ b/Lib/asynchat.py
@@ -99,6 +99,8 @@ class async_chat(asyncore.dispatcher):
"""
if isinstance(term, str) and self.use_encoding:
term = bytes(term, self.encoding)
+ elif isinstance(term, int) and term < 0:
+ raise ValueError('the number of received bytes must be positive')
self.terminator = term
def get_terminator(self):
diff --git a/Lib/test/test_asynchat.py b/Lib/test/test_asynchat.py
index 3471739..84867ec 100644
--- a/Lib/test/test_asynchat.py
+++ b/Lib/test/test_asynchat.py
@@ -304,5 +304,13 @@ class TestFifo(unittest.TestCase):
self.assertEqual(f.pop(), (0, None))
+class TestNotConnected(unittest.TestCase):
+ def test_disallow_negative_terminator(self):
+ # Issue #11259
+ client = asynchat.async_chat()
+ self.assertRaises(ValueError, client.set_terminator, -1)
+
+
+
if __name__ == "__main__":
unittest.main()