summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_json
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2015-05-03 02:36:26 (GMT)
committerBenjamin Peterson <benjamin@python.org>2015-05-03 02:36:26 (GMT)
commit122f4b1bda8262ace6aa021935e8c605a17c3748 (patch)
treefbe4e3303a9900d7c469786d12a8786d2f224c96 /Lib/test/test_json
parent0a9933ebf3704540a5f31225b26acb990e1de4bf (diff)
parent501182a47b722a02edd83a344ba53d06cd9afbd1 (diff)
downloadcpython-122f4b1bda8262ace6aa021935e8c605a17c3748.zip
cpython-122f4b1bda8262ace6aa021935e8c605a17c3748.tar.gz
cpython-122f4b1bda8262ace6aa021935e8c605a17c3748.tar.bz2
merge 3.3 (#24094)
Diffstat (limited to 'Lib/test/test_json')
-rw-r--r--Lib/test/test_json/test_dump.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/test/test_json/test_dump.py b/Lib/test/test_json/test_dump.py
index af19258..fd0d86b 100644
--- a/Lib/test/test_json/test_dump.py
+++ b/Lib/test/test_json/test_dump.py
@@ -28,6 +28,25 @@ class TestDump:
self.assertEqual(self.dumps(a, default=crasher),
'[null, null, null, null, null]')
+ # Issue 24094
+ def test_encode_evil_dict(self):
+ class D(dict):
+ def keys(self):
+ return L
+
+ class X:
+ def __hash__(self):
+ del L[0]
+ return 1337
+
+ def __lt__(self, o):
+ return 0
+
+ L = [X() for i in range(1122)]
+ d = D()
+ d[1337] = "true.dat"
+ self.assertEqual(self.dumps(d, sort_keys=True), '{"1337": "true.dat"}')
+
class TestPyDump(TestDump, PyTest): pass