From: Raymond Hettinger Date: Wed, 26 Aug 2015 15:08:38 +0000 (-0700) Subject: Issue #24913: Fix overrun error in deque.index(). X-Git-Tag: v3.6.0a1~1735^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=87674ec7d51eb99586231fbd6469b10d1f4fa111;p=thirdparty%2FPython%2Fcpython.git Issue #24913: Fix overrun error in deque.index(). --- diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py index b85850968412..87187161ab30 100644 --- a/Lib/test/test_deque.py +++ b/Lib/test/test_deque.py @@ -289,6 +289,11 @@ class TestBasic(unittest.TestCase): else: self.assertEqual(d.index(element, start, stop), target) + def test_insert_bug_24913(self): + d = deque('A' * 3) + with self.assertRaises(ValueError): + i = d.index("Hello world", 0, 4) + def test_insert(self): # Test to make sure insert behaves like lists elements = 'ABCDEFGHI' diff --git a/Misc/NEWS b/Misc/NEWS index 63b959d4110d..64aa0e1fa7fe 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -18,6 +18,9 @@ Library header in part headers. Patch written by Peter Landry and reviewed by Pierre Quentel. +- Issue #24913: Fix overrun error in deque.index(). + Found by John Leitch and Bryce Darling. + - Issue #24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu. - Issue #21159: Improve message in configparser.InterpolationMissingOptionError. diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 830c5b83ebcb..3856d83fb4e1 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -924,6 +924,8 @@ deque_index(dequeobject *deque, PyObject *args) if (stop < 0) stop = 0; } + if (stop > Py_SIZE(deque)) + stop = Py_SIZE(deque); for (i=0 ; i= start) {