From 25da5bebd8875728f1719ddc0f70dde529cec224 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 26 Oct 1999 00:12:20 +0000 Subject: [PATCH] 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. --- Python/ceval.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Python/ceval.c b/Python/ceval.c index 4c1bf2f8b43..fe2e0a2910f 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -482,6 +482,11 @@ eval_code2(co, globals, locals, 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(