Kaydet (Commit) c8e4bed1 authored tarafından Antoine Pitrou's avatar Antoine Pitrou

#2242: utf7 decoding crashes on bogus input on some Windows/MSVC versions

üst ab396e07
...@@ -532,6 +532,9 @@ class UnicodeTest( ...@@ -532,6 +532,9 @@ class UnicodeTest(
self.assertEqual(unicode('+3ADYAA-', 'utf-7', 'replace'), u'\ufffd') self.assertEqual(unicode('+3ADYAA-', 'utf-7', 'replace'), u'\ufffd')
# Issue #2242: crash on some Windows/MSVC versions
self.assertRaises(UnicodeDecodeError, '+\xc1'.decode, 'utf-7')
def test_codecs_utf8(self): def test_codecs_utf8(self):
self.assertEqual(u''.encode('utf-8'), '') self.assertEqual(u''.encode('utf-8'), '')
self.assertEqual(u'\u20ac'.encode('utf-8'), '\xe2\x82\xac') self.assertEqual(u'\u20ac'.encode('utf-8'), '\xe2\x82\xac')
......
...@@ -12,6 +12,9 @@ What's New in Python 2.5.3? ...@@ -12,6 +12,9 @@ What's New in Python 2.5.3?
Core and builtins Core and builtins
----------------- -----------------
- Issue #2242: Fix a crash when decoding invalid utf-7 input on certain
Windows / Visual Studio versions.
- Issue #3360: Fix incorrect parsing of '020000000000.0', which - Issue #3360: Fix incorrect parsing of '020000000000.0', which
produced a ValueError instead of giving the correct float. produced a ValueError instead of giving the correct float.
......
...@@ -974,7 +974,7 @@ PyObject *PyUnicode_DecodeUTF7(const char *s, ...@@ -974,7 +974,7 @@ PyObject *PyUnicode_DecodeUTF7(const char *s,
while (s < e) { while (s < e) {
Py_UNICODE ch; Py_UNICODE ch;
restart: restart:
ch = *s; ch = (unsigned char) *s;
if (inShift) { if (inShift) {
if ((ch == '-') || !B64CHAR(ch)) { if ((ch == '-') || !B64CHAR(ch)) {
......
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