Kaydet (Commit) dee76e62 authored tarafından Amaury Forgeot d'Arc's avatar Amaury Forgeot d'Arc

Issue #13774: json: Fix a SystemError when a bogus encoding is passed to

json.loads().
üst 44765e58
......@@ -80,6 +80,10 @@ class TestUnicode(object):
# Issue 10038.
self.assertEqual(type(self.loads('"foo"')), unicode)
def test_bad_encoding(self):
self.assertRaises(UnicodeEncodeError, self.loads, '"a"', u"rat\xe9")
self.assertRaises(TypeError, self.loads, '"a"', 1)
class TestPyUnicode(TestUnicode, PyTest): pass
class TestCUnicode(TestUnicode, CTest): pass
......@@ -374,6 +374,9 @@ Library
Extension Modules
-----------------
- Issue #13774: json: Fix a SystemError when a bogus encoding is passed to
json.loads().
- Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
Vilmos Nebehaj.
......
......@@ -1725,8 +1725,15 @@ scanner_init(PyObject *self, PyObject *args, PyObject *kwds)
Py_DECREF(s->encoding);
s->encoding = tmp;
}
if (s->encoding == NULL || !PyString_Check(s->encoding))
if (s->encoding == NULL)
goto bail;
if (!PyString_Check(s->encoding)) {
PyErr_Format(PyExc_TypeError,
"encoding must be a string, not %.80s",
Py_TYPE(s->encoding)->tp_name);
goto bail;
}
/* All of these will fail "gracefully" so we don't need to verify them */
s->strict = PyObject_GetAttrString(ctx, "strict");
......
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