]> granicus.if.org Git - python/commitdiff
make sure to not call memcpy with a NULL second argument
authorBenjamin Peterson <benjamin@python.org>
Wed, 7 Sep 2016 00:58:25 +0000 (17:58 -0700)
committerBenjamin Peterson <benjamin@python.org>
Wed, 7 Sep 2016 00:58:25 +0000 (17:58 -0700)
Objects/listobject.c

index c41462015169a85ba7ef83e5a24682ec56ebd6ca..8ee86c64132c2fc3296bb78e1fc710ec69855691 100644 (file)
@@ -669,14 +669,17 @@ list_ass_slice(PyListObject *a, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v)
     item = a->ob_item;
     /* recycle the items that we are about to remove */
     s = norig * sizeof(PyObject *);
-    if (s > sizeof(recycle_on_stack)) {
-        recycle = (PyObject **)PyMem_MALLOC(s);
-        if (recycle == NULL) {
-            PyErr_NoMemory();
-            goto Error;
+    /* If norig == 0, item might be NULL, in which case we may not memcpy from it. */
+    if (s) {
+        if (s > sizeof(recycle_on_stack)) {
+            recycle = (PyObject **)PyMem_MALLOC(s);
+            if (recycle == NULL) {
+                PyErr_NoMemory();
+                goto Error;
+            }
         }
+        memcpy(recycle, &item[ilow], s);
     }
-    memcpy(recycle, &item[ilow], s);
 
     if (d < 0) { /* Delete -d items */
         memmove(&item[ihigh+d], &item[ihigh],