summaryrefslogtreecommitdiffstats
path: root/Objects/call.c
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2017-09-05 05:23:42 (GMT)
committerGitHub <noreply@github.com>2017-09-05 05:23:42 (GMT)
commita3070d530c70477273cacbc61660b318582fff44 (patch)
tree632003f1a59f22cc2c580401873d1d230b08d92f /Objects/call.c
parentdb564238db440d4a2d8eb9d60ffb94ef291f6d30 (diff)
downloadcpython-a3070d530c70477273cacbc61660b318582fff44.zip
cpython-a3070d530c70477273cacbc61660b318582fff44.tar.gz
cpython-a3070d530c70477273cacbc61660b318582fff44.tar.bz2
bpo-31347: _PyObject_FastCall_Prepend: do not call memcpy if args might not be null (#3329)
Passing NULL as the second argument to to memcpy is undefined behavior even if the size is 0.
Diffstat (limited to 'Objects/call.c')
-rw-r--r--Objects/call.c6
1 files changed, 3 insertions, 3 deletions
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) {