From f523886240d82b1da5b57c9daf39b4fb22a23d1d Mon Sep 17 00:00:00 2001 From: John-Mark Gurney Date: Thu, 17 Oct 2024 16:39:41 -0700 Subject: [PATCH] handle empty keys which apparently happen in v2 torrents --- ui/medashare/btv/bencode.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ui/medashare/btv/bencode.py b/ui/medashare/btv/bencode.py index 0fc96c4..34a4115 100644 --- a/ui/medashare/btv/bencode.py +++ b/ui/medashare/btv/bencode.py @@ -70,11 +70,11 @@ def decode_list(x, f): def decode_dict(x, f): r, f = {}, f+1 - lastkey = '' + lastkey = None while x[f] != b'e'[0]: k, f = decode_string(x, f) k = k.decode('us-ascii') - if lastkey >= k: + if lastkey is not None and lastkey >= k: raise ValueError lastkey = k r[k], f = decode_func[x[f]](x, f) @@ -339,9 +339,13 @@ class _TestCases(unittest.TestCase): def test_bencode(self): test_bencode() + self.assertEqual(bencode({'': 5}), b'd0:i5ee') + def test_bdecode(self): test_bdecode() + self.assertEqual(bdecode(b'd0:i5ee'), { '': 5 }) + try: #pragma: no cover import psyco psyco.bind(bdecode)