Mercurial > cpython-lru_cache-weakref
diff Python/getargs.c @ 20710:a44cc0c21cfe legacy-trunk
PyArg_ParseTupleAndKeywords: do basic sanity checks on the arguments,
and raise an error if they're insane.
vgetargskeywords: the same, except that since this is an internal routine,
just assert that the arguments are sane.
| author | Tim Peters <tim.peters@gmail.com> |
|---|---|
| date | Sat, 27 Oct 2001 03:58:40 +0000 |
| parents | 310450e74f2f |
| children | 2890769b1e69 |
line wrap: on
line diff
--- a/Python/getargs.c Sat Oct 27 00:46:09 2001 +0000 +++ b/Python/getargs.c Sat Oct 27 03:58:40 2001 +0000 @@ -1005,7 +1005,16 @@ { int retval; va_list va; - + + if ((args == NULL || !PyTuple_Check(args)) || + (keywords != NULL && !PyDict_Check(keywords)) || + format == NULL || + kwlist == NULL) + { + PyErr_BadInternalCall(); + return -1; + } + va_start(va, kwlist); retval = vgetargskeywords(args, keywords, format, kwlist, &va); va_end(va); @@ -1029,6 +1038,12 @@ int nkwds, pos, match, converted; PyObject *key, *value; + assert(args != NULL && PyTuple_Check(args)); + assert(keywords == NULL || PyDict_Check(keywords)); + assert(format != NULL); + assert(kwlist != NULL); + assert(p_va != NULL); + /* nested tuples cannot be parsed when using keyword arguments */ for (;;) {
