From 931331a328d522bb014f9e9c13884d7566108268 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 7 Sep 2015 22:37:02 +0300 Subject: Issue #25019: Fixed a crash caused by setting non-string key of expat parser. Added additional tests for expat parser attributes. Based on patch by John Leitch. --- Modules/pyexpat.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'Modules/pyexpat.c') diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c index 19be0c7cc52..c4fdaafb860 100644 --- a/Modules/pyexpat.c +++ b/Modules/pyexpat.c @@ -1341,11 +1341,16 @@ static int xmlparse_setattro(xmlparseobject *self, PyObject *name, PyObject *v) { /* Set attribute 'name' to value 'v'. v==NULL means delete */ + if (!PyUnicode_Check(name)) { + PyErr_Format(PyExc_TypeError, + "attribute name must be string, not '%.200s'", + name->ob_type->tp_name); + return -1; + } if (v == NULL) { PyErr_SetString(PyExc_RuntimeError, "Cannot delete attribute"); return -1; } - assert(PyUnicode_Check(name)); if (PyUnicode_CompareWithASCIIString(name, "buffer_text") == 0) { int b = PyObject_IsTrue(v); if (b < 0) -- cgit v1.2.3-65-gdbad