@@ -1074,4 +1074,32 @@ def test_indefinite_list_highjacking_does_not_break_cbor2():
10741074 a = {ls : 1 }
10751075 encoded = cbor2 .dumps (a , default = default_encoder )
10761076 decoded = cbor2 .loads (encoded )
1077- assert isinstance (list (decoded .keys ())[0 ], IndefiniteList )
1077+ assert isinstance (list (decoded .keys ())[0 ], IndefiniteList )
1078+
1079+ def test_definite_list_highjacking_does_not_break_cbor2 ():
1080+ ls = FrozenList (["hello" ])
1081+ ls .freeze ()
1082+ a = {ls : 1 }
1083+ encoded = cbor2 .dumps (a , default = default_encoder )
1084+ decoded = cbor2 .loads (encoded )
1085+ assert isinstance (list (decoded .keys ())[0 ], (list , tuple ))
1086+
1087+ def test_indefinite_list_highjacking_does_not_break_cbor2_datum ():
1088+ ls = IndefiniteFrozenList (["hello" ])
1089+ ls .freeze ()
1090+ datum = CBORTag (251 , ls )
1091+ a = {datum : 1 }
1092+ encoded = cbor2 .dumps (a , default = default_encoder )
1093+ decoded = cbor2 .loads (encoded )
1094+ assert isinstance (list (decoded .keys ())[0 ], CBORTag )
1095+ assert isinstance (list (decoded .keys ())[0 ].value , IndefiniteList )
1096+
1097+ def test_definite_list_highjacking_does_not_break_cbor2_datum ():
1098+ ls = FrozenList (["hello" ])
1099+ ls .freeze ()
1100+ datum = CBORTag (251 , ls )
1101+ a = {datum : 1 }
1102+ encoded = cbor2 .dumps (a , default = default_encoder )
1103+ decoded = cbor2 .loads (encoded )
1104+ assert isinstance (list (decoded .keys ())[0 ], CBORTag )
1105+ assert isinstance (list (decoded .keys ())[0 ].value , (list , tuple ))
0 commit comments