Commit 29ec595c authored by Victor Stinner's avatar Victor Stinner

Issue #17223: array module: Fix a crasher when converting an array containing

invalid characters (outside range [U+0000; U+10ffff]) to Unicode: repr(array),
str(array) and array.tounicode(). Patch written by Manuel Jacob.
parent d21b58c0
......@@ -1069,6 +1069,12 @@ class UnicodeTest(StringTest, unittest.TestCase):
self.assertRaises(TypeError, a.fromunicode)
def test_issue17223(self):
# this used to crash
a = array.array('u', b'\xff' * 4)
self.assertRaises(ValueError, a.tounicode)
self.assertRaises(ValueError, str, a)
class NumberTest(BaseTest):
def test_extslice(self):
......
......@@ -12,6 +12,10 @@ What's New in Python 3.3.1?
Core and Builtins
-----------------
- Issue #17223: array module: Fix a crasher when converting an array containing
invalid characters (outside range [U+0000; U+10ffff]) to Unicode:
repr(array), str(array) and array.tounicode(). Patch written by Manuel Jacob.
- Issue #17223: Fix PyUnicode_FromUnicode() for string of 1 character outside
the range U+0000-U+10ffff.
......
......@@ -2180,6 +2180,8 @@ array_repr(arrayobject *a)
} else {
v = array_tolist(a, NULL);
}
if (v == NULL)
return NULL;
s = PyUnicode_FromFormat("array('%c', %R)", (int)typecode, v);
Py_DECREF(v);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment