diff Python/ceval.c @ 11407:507546a87dcf legacy-trunk

Fix PR117. The error message is "keywords must be strings". Perhaps not as descriptive as what Barry suggests, but this also catches the (in my opinion important) case where some other C code besides apply() constructs a kwdict that doesn't have the right format. All the other possibilities of getting it wrong (non-dict, wrong keywords etc) are already caught so this makes sense to check here.
author Guido van Rossum <guido@python.org>
date Tue, 26 Oct 1999 00:12:20 +0000
parents 47171f2d7d58
children 1855131a4dcd
line wrap: on
line diff
--- a/Python/ceval.c	Sat Oct 23 19:25:05 1999 +0000
+++ b/Python/ceval.c	Tue Oct 26 00:12:20 1999 +0000
@@ -482,6 +482,11 @@
 			PyObject *keyword = kws[2*i];
 			PyObject *value = kws[2*i + 1];
 			int j;
+			if (keyword == NULL || !PyString_Check(keyword)) {
+				PyErr_SetString(PyExc_TypeError,
+						"keywords must be strings");
+				goto fail;
+			}
 			/* XXX slow -- speed up using dictionary? */
 			for (j = 0; j < co->co_argcount; j++) {
 				PyObject *nm = PyTuple_GET_ITEM(