diff options
author | Benjamin Peterson <benjamin@python.org> | 2017-09-05 05:23:42 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-05 05:23:42 (GMT) |
commit | a3070d530c70477273cacbc61660b318582fff44 (patch) | |
tree | 632003f1a59f22cc2c580401873d1d230b08d92f /Objects/call.c | |
parent | db564238db440d4a2d8eb9d60ffb94ef291f6d30 (diff) | |
download | cpython-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.c | 6 |
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) { |