]> granicus.if.org Git - python/commitdiff
[3.6] bpo-30640: Fix undefined behavior in _PyFunction_FastCallDict() and PyEval_Eval...
authorZackery Spytz <Osmunda46@gmail.com>
Fri, 8 Sep 2017 01:17:38 +0000 (19:17 -0600)
committerVictor Stinner <victor.stinner@gmail.com>
Fri, 8 Sep 2017 01:17:38 +0000 (03:17 +0200)
k + 1 was calculated with k = NULL..
(cherry picked from commit c6ea8974e2d939223bfd6d64ee13ec89c090d2e0)

Python/ceval.c

index 8eb78bf4d465882b36faba353b09f0cd90bbe273..4aa3250cd0bad0016fb6580e9470030f88c55700 100644 (file)
@@ -4171,7 +4171,8 @@ PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals,
 {
     return _PyEval_EvalCodeWithName(_co, globals, locals,
                                     args, argcount,
-                                    kws, kws + 1, kwcount, 2,
+                                    kws, kws != NULL ? kws + 1 : NULL,
+                                    kwcount, 2,
                                     defs, defcount,
                                     kwdefs, closure,
                                     NULL, NULL);
@@ -5053,7 +5054,7 @@ _PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs,
 
     result = _PyEval_EvalCodeWithName((PyObject*)co, globals, (PyObject *)NULL,
                                       args, nargs,
-                                      k, k + 1, nk, 2,
+                                      k, k != NULL ? k + 1 : NULL, nk, 2,
                                       d, nd, kwdefs,
                                       closure, name, qualname);
     Py_XDECREF(kwtuple);