diff options
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2017-09-04-16-35-06.bpo-31347.KDuf2w.rst | 1 | ||||
-rw-r--r-- | Objects/call.c | 6 |
2 files changed, 4 insertions, 3 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2017-09-04-16-35-06.bpo-31347.KDuf2w.rst b/Misc/NEWS.d/next/Core and Builtins/2017-09-04-16-35-06.bpo-31347.KDuf2w.rst new file mode 100644 index 0000000..52a6168 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2017-09-04-16-35-06.bpo-31347.KDuf2w.rst @@ -0,0 +1 @@ +Fix possible undefined behavior in _PyObject_FastCall_Prepend. diff --git a/Objects/call.c b/Objects/call.c index 4294a9b..9246432 100644 --- a/Objects/call.c +++ b/Objects/call.c @@ -854,9 +854,9 @@ _PyObject_FastCall_Prepend(PyObject *callable, /* use borrowed references */ args2[0] = obj; - memcpy(&args2[1], - args, - (nargs - 1)* sizeof(PyObject *)); + if (nargs > 1) { + memcpy(&args2[1], args, (nargs - 1) * sizeof(PyObject *)); + } result = _PyObject_FastCall(callable, args2, nargs); if (args2 != small_stack) { |