summaryrefslogtreecommitdiff
path: root/Lib/test/pickletester.py
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2019-11-24 20:15:08 +0100
committerMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2019-11-24 11:15:08 -0800
commit6f03b236c17c96bc9f8a004ffa7e7ae0542e9cac (patch)
treea3c37873c66b49cfe26b7b7183b75adead85b37b /Lib/test/pickletester.py
parente407646b741db6851789963e525a1f5daad0a336 (diff)
downloadcpython-git-6f03b236c17c96bc9f8a004ffa7e7ae0542e9cac.tar.gz
bpo-38876: Raise pickle.UnpicklingError when loading an item from memo for invalid input (GH-17335)
The previous code was raising a `KeyError` for both the Python and C implementation. This was caused by the specified index of an invalid input which did not exist in the memo structure, where the pickle stores what objects it has seen. The malformed input would have caused either a `BINGET` or `LONG_BINGET` load from the memo, leading to a `KeyError` as the determined index was bogus. https://bugs.python.org/issue38876 https://bugs.python.org/issue38876
Diffstat (limited to 'Lib/test/pickletester.py')
-rw-r--r--Lib/test/pickletester.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index c9f374678a..953fd5c5a2 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -1019,7 +1019,9 @@ class AbstractUnpickleTests(unittest.TestCase):
self.assertEqual(self.loads(dumped), '\u20ac\x00')
def test_misc_get(self):
- self.check_unpickling_error(KeyError, b'g0\np0')
+ self.check_unpickling_error(pickle.UnpicklingError, b'g0\np0')
+ self.check_unpickling_error(pickle.UnpicklingError, b'jens:')
+ self.check_unpickling_error(pickle.UnpicklingError, b'hens:')
self.assert_is_copy([(100,), (100,)],
self.loads(b'((Kdtp0\nh\x00l.))'))