diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-05-19 00:54:06 +0000 |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-05-19 00:54:06 +0000 |
commit | 7cb80215eb0e3492f5227875ae546f981301703d (patch) | |
tree | 8e2860b934ea504632bda2ad1b6a121366fc4fc9 /Python | |
parent | f6e4e2c2fa3e76a272ca41f744f0cc4e68b193e7 (diff) | |
download | cpython-7cb80215eb0e3492f5227875ae546f981301703d.tar.gz |
Issue #6697: Fix a crash if a keyword contains a surrogate
Diffstat (limited to 'Python')
-rw-r--r-- | Python/getargs.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/Python/getargs.c b/Python/getargs.c index 4fa2b5bffb..e8efb3c279 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -1755,18 +1755,21 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format, "keywords must be strings"); return cleanreturn(0, freelist); } + /* check that _PyUnicode_AsString() result is not NULL */ ks = _PyUnicode_AsString(key); - for (i = 0; i < len; i++) { - if (!strcmp(ks, kwlist[i])) { - match = 1; - break; + if (ks != NULL) { + for (i = 0; i < len; i++) { + if (!strcmp(ks, kwlist[i])) { + match = 1; + break; + } } } if (!match) { PyErr_Format(PyExc_TypeError, - "'%s' is an invalid keyword " + "'%U' is an invalid keyword " "argument for this function", - ks); + key); return cleanreturn(0, freelist); } } |