(self)
| 1383 | self.check_unpickling_error(error, b'cbuiltins\nint\n)N\x92.') |
| 1384 | |
| 1385 | def test_bad_state(self): |
| 1386 | c = C() |
| 1387 | c.x = None |
| 1388 | base = b'c__main__\nC\n)\x81' |
| 1389 | self.assertEqual(self.loads(base + b'}X\x01\x00\x00\x00xNsb.'), c) |
| 1390 | self.assertEqual(self.loads(base + b'N}X\x01\x00\x00\x00xNs\x86b.'), c) |
| 1391 | # non-hashable dict key |
| 1392 | self.check_unpickling_error(TypeError, base + b'}]Nsb.') |
| 1393 | # state = list |
| 1394 | error = (pickle.UnpicklingError, AttributeError) |
| 1395 | self.check_unpickling_error(error, base + b'](}}eb.') |
| 1396 | # state = 1-tuple |
| 1397 | self.check_unpickling_error(error, base + b'}\x85b.') |
| 1398 | # state = 3-tuple |
| 1399 | self.check_unpickling_error(error, base + b'}}}\x87b.') |
| 1400 | # non-hashable slot name |
| 1401 | self.check_unpickling_error(TypeError, base + b'}}]Ns\x86b.') |
| 1402 | # non-string slot name |
| 1403 | self.check_unpickling_error(TypeError, base + b'}}NNs\x86b.') |
| 1404 | # dict = True |
| 1405 | self.check_unpickling_error(error, base + b'\x88}\x86b.') |
| 1406 | # slots dict = True |
| 1407 | self.check_unpickling_error(error, base + b'}\x88\x86b.') |
| 1408 | |
| 1409 | class BadKey1: |
| 1410 | count = 1 |
| 1411 | def __hash__(self): |
| 1412 | if not self.count: |
| 1413 | raise CustomError |
| 1414 | self.count -= 1 |
| 1415 | return 42 |
| 1416 | __main__.BadKey1 = BadKey1 |
| 1417 | # bad hashable dict key |
| 1418 | self.check_unpickling_error(CustomError, base + b'}c__main__\nBadKey1\n)\x81Nsb.') |
| 1419 | |
| 1420 | def test_bad_stack(self): |
| 1421 | badpickles = [ |
nothing calls this directly
no test coverage detected