Re: [Python-Dev] cpython (3.2): Issue #16335: Fix integer overflow in unicode-escape decoder.

Am 21.01.2013 10:46, schrieb serhiy.storchaka:
http://hg.python.org/cpython/rev/7625866f8127 changeset: 81622:7625866f8127 branch: 3.2 parent: 81610:260a9afd999a user: Serhiy Storchaka <storchaka@gmail.com> date: Mon Jan 21 11:38:00 2013 +0200 summary: Issue #16335: Fix integer overflow in unicode-escape decoder.
files: Lib/test/test_ucn.py | 16 ++++++++++++++++ Objects/unicodeobject.c | 3 ++- 2 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/Lib/test/test_ucn.py b/Lib/test/test_ucn.py --- a/Lib/test/test_ucn.py +++ b/Lib/test/test_ucn.py @@ -8,6 +8,7 @@ """#"
import unittest +import _testcapi
from test import support
@@ -141,6 +142,21 @@ str, b"\\NSPACE", 'unicode-escape', 'strict' )
+ @unittest.skipUnless(_testcapi.INT_MAX < _testcapi.PY_SSIZE_T_MAX, + "needs UINT_MAX < SIZE_MAX") + def test_issue16335(self): + # very very long bogus character name + try: + x = b'\\N{SPACE' + b'x' * (_testcapi.UINT_MAX + 1) + b'}' + except MemoryError: + raise unittest.SkipTest("not enough memory") + self.assertEqual(len(x), len(b'\\N{SPACE}') + (_testcapi.UINT_MAX + 1)) + self.assertRaisesRegex(UnicodeError, + 'unknown Unicode character name', + x.decode, 'unicode-escape' + ) + +
The test requires a lot of memory on my 64bit Linux box. Two of three times the test process was killed by the Kernel's out of memory manager although I have 8 GB physical RAM and 4 GB swap. Can you rewrite the test to use less memory?
participants (1)
-
Christian Heimes