diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2015-07-26 06:02:23 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-07-26 06:02:23 (GMT) |
commit | f002225f7e0b82af64f5f524ed870b83a226557c (patch) | |
tree | c4f24d4771ff8fc15750eb177cbd535552fd56cf /Modules | |
parent | 940d69d4441393fc15f3418364d305cd683ad983 (diff) | |
parent | 83236f7a8b638454ea74743e1103faa0545e9a62 (diff) | |
download | cpython-f002225f7e0b82af64f5f524ed870b83a226557c.zip cpython-f002225f7e0b82af64f5f524ed870b83a226557c.tar.gz cpython-f002225f7e0b82af64f5f524ed870b83a226557c.tar.bz2 |
Issue #24683: Fixed crashes in _json functions called with arguments of
inappropriate type.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_json.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Modules/_json.c b/Modules/_json.c index 8000f91..f63d758 100644 --- a/Modules/_json.c +++ b/Modules/_json.c @@ -1344,11 +1344,19 @@ encoder_init(PyObject *self, PyObject *args, PyObject *kwds) assert(PyEncoder_Check(self)); s = (PyEncoderObject *)self; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOOOOOOOp:make_encoder", kwlist, - &markers, &defaultfn, &encoder, &indent, &key_separator, &item_separator, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOOOUUOOp:make_encoder", kwlist, + &markers, &defaultfn, &encoder, &indent, + &key_separator, &item_separator, &sort_keys, &skipkeys, &allow_nan)) return -1; + if (markers != Py_None && !PyDict_Check(markers)) { + PyErr_Format(PyExc_TypeError, + "make_encoder() argument 1 must be dict or None, " + "not %.200s", Py_TYPE(markers)->tp_name); + return -1; + } + s->markers = markers; s->defaultfn = defaultfn; s->encoder = encoder; |