Commit 45772cde authored by Tim Peters's avatar Tim Peters

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.
parent a9f4739a
...@@ -1006,6 +1006,15 @@ PyArg_ParseTupleAndKeywords(PyObject *args, ...@@ -1006,6 +1006,15 @@ PyArg_ParseTupleAndKeywords(PyObject *args,
int retval; int retval;
va_list va; 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); va_start(va, kwlist);
retval = vgetargskeywords(args, keywords, format, kwlist, &va); retval = vgetargskeywords(args, keywords, format, kwlist, &va);
va_end(va); va_end(va);
...@@ -1029,6 +1038,12 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format, ...@@ -1029,6 +1038,12 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format,
int nkwds, pos, match, converted; int nkwds, pos, match, converted;
PyObject *key, *value; 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 */ /* nested tuples cannot be parsed when using keyword arguments */
for (;;) { for (;;) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment