34 lines
1.1 KiB
Diff
34 lines
1.1 KiB
Diff
diff --git a/rencode/_rencode.pyx b/rencode/_rencode.pyx
|
|
index 5716c2d..14e1bec 100644
|
|
--- a/rencode/_rencode.pyx 2021-08-05 21:15:32.117793791 +0700
|
|
+++ b/rencode/_rencode.pyx 2021-08-05 21:15:29.931809176 +0700
|
|
@@ -527,6 +527,9 @@
|
|
return decode_fixed_dict(data, pos)
|
|
elif typecode == CHR_DICT:
|
|
return decode_dict(data, pos)
|
|
+ else:
|
|
+ raise Exception("invalid typecode %i" % typecode)
|
|
+
|
|
|
|
def loads(data, decode_utf8=False):
|
|
"""
|
|
diff --git a/tests/test_rencode.py b/tests/test_rencode.py
|
|
index 0081a1c..63cd3df 100644
|
|
--- a/tests/test_rencode.py
|
|
+++ b/tests/test_rencode.py
|
|
@@ -212,5 +212,14 @@ class TestRencode(unittest.TestCase):
|
|
assert rencode_orig.__version__
|
|
self.assertEqual(rencode.__version__[1:], rencode_orig.__version__[1:], "version number does not match")
|
|
|
|
+ def test_invalidtypecode(self):
|
|
+ s = b';\x2f\x7f'
|
|
+ try:
|
|
+ rencode.loads(s)
|
|
+ except Exception:
|
|
+ pass
|
|
+ else:
|
|
+ raise Exception("invalid typecode should raise an Exception")
|
|
+
|
|
if __name__ == '__main__':
|
|
unittest.main()
|