summaryrefslogtreecommitdiff
path: root/Lib/test/test_unicode.py
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2007-06-09 03:36:34 +0000
committerNeal Norwitz <nnorwitz@gmail.com>2007-06-09 03:36:34 +0000
commit7dbd2a3720be7f54068f8a8f3fa2176dd2ab1ebe (patch)
tree6a7fe07925a49b6d79d09e562816ec29fa9b6482 /Lib/test/test_unicode.py
parentea7f88e3d9cc42d7cfa9e87cc248103532c9d4d4 (diff)
downloadcpython-git-7dbd2a3720be7f54068f8a8f3fa2176dd2ab1ebe.tar.gz
Prevent expandtabs() on string and unicode objects from causing a segfault when
a large width is passed on 32-bit platforms. Found by Google. It would be good for people to review this especially carefully and verify I don't have an off by one error and there is no other way to cause overflow.
Diffstat (limited to 'Lib/test/test_unicode.py')
-rw-r--r--Lib/test/test_unicode.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 5ad54bf070..3ee5ee2245 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -817,8 +817,13 @@ class UnicodeTest(
self.assertEqual(repr(s1()), '\\n')
self.assertEqual(repr(s2()), '\\n')
-
-
+ def test_expandtabs_overflows_gracefully(self):
+ # This test only affects 32-bit platforms because expandtabs can only take
+ # an int as the max value, not a 64-bit C long. If expandtabs is changed
+ # to take a 64-bit long, this test should apply to all platforms.
+ if sys.maxint > (1 << 32):
+ return
+ self.assertRaises(OverflowError, u't\tt\t'.expandtabs, sys.maxint)
def test_main():