raise DecodeError("unfinished tag")
if indexbytes(data, i) & 0x80 == 0:
break
+ if i == 1 and indexbytes(data, 1) < 0x1F:
+ raise DecodeError("unexpected long form")
if i > 1 and indexbytes(data, 1) & 0x7F == 0:
raise DecodeError("leading zero byte in tag value")
i += 1
with assertRaisesRegex(self, DecodeError, "leading zero byte"):
tag_strip(raw)
+ @given(tag_classes, tag_forms, integers(max_value=30, min_value=0))
+ def test_unexpected_long_form(self, klass, form, num):
+ raw = int2byte(klass | form | 31) + int2byte(num)
+ with assertRaisesRegex(self, DecodeError, "unexpected long form"):
+ tag_strip(raw)
+
class TestLenCoder(TestCase):
@settings(max_examples=LONG_TEST_MAX_EXAMPLES)